7
मैं दो या अधिक अन्य कार्य परिणामों की निरंतरता के रूप में एक सिस्टम को कैसे कार्यान्वित कर सकता हूं। थ्रेडिंग। कार्य?किसी तीसरे कार्य में दो कार्य परिणामों को कैसे मर्ज करें?
public Task<FinalResult> RunStepsAsync()
{
Task<Step1Result> task1 = Task<Step1Result>.Factory.StartNew(Step1);
// Use the result of step 1 in steps 2A and 2B
Task<Step2AResult> task2A = task1.ContinueWith(t1 => Step2A(t1.Result));
Task<Step2BResult> task2B = task1.ContinueWith(t1 => Step2B(t1.Result));
// Now merge the results of steps 2A and 2B in step 3
Task<FinalResult> task3 = task2A
.ContinueWith(
t2A => task2B.ContinueWith(
t2B => Step3(t2A.Result, t2B.Result)))
.Unwrap();
return task3;
}
यह काम करता है, लेकिन डबल जारी रखें अक्षम लगता है। क्या ऐसा करने का कोई बेहतर तरीका है, शायद टास्क कॉम्प्लिशन स्रोत के साथ? (मैं ताले या कार्य का उपयोग नहीं करना चाहता हूं। प्रतीक्षा करें।)
ऐसा लगता है कि मैं क्या चाहता हूं, हालांकि 'जारी रखें' ओवरलोड जो आप लिंक करते हैं वह 'कार्य' नहीं लेता है या वापस नहीं करता है। यदि आप http://msdn.microsoft.com/en-us/library/ee362175.aspx पर अपना लिंक अपडेट करते हैं, तो मैं आपका उत्तर स्वीकार करूंगा। –
सुंदर! मैं जारी रहूँगा सभी। चीयर्स! –