मैं थोड़ी देर के अंदर टीपीएल का उपयोग करने की कोशिश कर रहा हूं और मुझे कुछ मानों को पास करने की आवश्यकता है जो लूप में बदल जाते हैं। उदाहरण के लिए, यहाँ यह एक सूचकांक कि वृद्धि की जाती है (जरूरी लाइन में जो कार्य निर्माण अनुरोध किया जाता है के बाद) के साथ एक उदाहरण दिखाया गया है:लूप के अंदर कार्य शुरू करना: लूप के अंदर मूल्यों को कैसे पास किया जा सकता है?
int index = 0;
Task[] tasks;
while(/*condition*/)
{
tasks[index] = Task.Factory.StartNew(() => DoJob(index));
index++;
}
लेकिन निश्चित रूप से यह काम नहीं करता है, क्योंकि सूचकांक मान हो सकता है कार्य शुरू होने से पहले वृद्धि हुई। एक संभावित समाधान एक वेटहैंडल को पास करने के लिए भी हो सकता है जिस पर सूचकांक में वृद्धि से पहले इंतजार करना पड़ता है और इसे DoJob विधि में संकेत दिया जाना चाहिए, लेकिन यह मुझे वास्तव में एक अच्छा समाधान प्रतीत नहीं होता है। कोई अन्य विचार?
रिफैक्टर हमेशा यह सीधा नहीं हो सकता है, लेकिन हमेशा संभव होना चाहिए - नेस्टेड लूप पर बाक न करें:] –