मेरे पास दो विधियों, लोड() और प्रक्रिया() के साथ एक कक्षा है। मैं इन्हें व्यक्तिगत रूप से पृष्ठभूमि कार्यों, या अनुक्रम में चलाने में सक्षम होना चाहता हूं। मुझे ContinueWith() वाक्यविन्यास पसंद है, लेकिन मैं इसे काम करने में सक्षम नहीं हूं। मुझे जिस विधि के साथ जारी है उस पर मुझे एक कार्य पैरामीटर लेना है और प्रारंभिक विधि पर कार्य पैरामीटर नहीं हो सकता है।कार्य। संपर्क विधि के साथ कार्य तर्क की आवश्यकता है?
मैं इसे लैम्ब्डा अभिव्यक्तियों के बिना करना चाहता हूं, लेकिन क्या मैं या तो उनका उपयोग कर रहा हूं, किसी एक विधि पर कार्य पैरामीटर को मजबूर कर रहा हूं, या तीसरी विधि LoadAndProcess() बना रहा हूं?
void Run()
{
// doesn't work, but I'd like to do it
//Task.Factory.StartNew(MethodNoArguments).ContinueWith(MethodNoArguments);
Console.WriteLine("ContinueWith");
Task.Factory.StartNew(MethodNoArguments).ContinueWith(MethodWithTaskArgument).Wait();
Console.WriteLine("Lambda");
Task.Factory.StartNew(() => { MethodNoArguments(); MethodNoArguments(); }).Wait();
Console.WriteLine("ContinueWith Lambda");
Task.Factory.StartNew(MethodNoArguments).ContinueWith(x => {
MethodNoArguments();
}).Wait();
}
void MethodNoArguments()
{
Console.WriteLine("MethodNoArguments()");
}
void MethodWithTaskArgument(Task t = null)
{
Console.WriteLine("MethodWithTaskArgument()");
}
क्या आप वर्णन कर सकते हैं कि आप लैम्ब्डा अभिव्यक्तियों का उपयोग क्यों नहीं करना चाहते हैं? –
मेरे पास जारी रखने के सिंटैक्स को पसंद करने के अलावा कोई वास्तविक कारण नहीं है और मुझे लगता है कि लैम्ब्डा अभिव्यक्ति इसे कम दिखने वाली गंदगी और समझने में अधिक कठिन लगती है। –
क्या 'लोड' और' प्रक्रिया 'अनुक्रमिक रूप से एक दूसरे पर निर्भर करता है? क्या डेटा उनके बीच साझा किया गया है जहां थ्रेड सिंक्रनाइज़ेशन परेशानी हो सकती है? –