क्या Parallel.ForEach में 'जारी' के बराबर है?


249

मैं कुछ कोड पोर्ट कर रहा हूं Parallel.ForEachऔर continueमुझे एक कोड में एक त्रुटि मिली है । क्या कुछ समान है जो मैं Parallel.ForEachकार्यात्मक रूप से continueएक foreachलूप में बराबर उपयोग कर सकता हूं ?

Parallel.ForEach(items, parallelOptions, item =>
{
    if (!isTrue)
        continue;
});

जवाबों:


414
return;

(शरीर केवल एक आइटम है जिसे प्रत्येक आइटम के लिए कहा जाता है)


23

जब आपने अपने लूप को Parallel.Foreach लॉजिक के लिए एक संगत परिभाषा में परिवर्तित किया, तो आपने स्टेटमेंट बॉडी को लंबोदर बना दिया। खैर, यह एक क्रिया है जिसे समानांतर फ़ंक्शन द्वारा कहा जाता है।

तो, के continueसाथ बदलें return, और बयान Stop()या Break()बयान के साथ तोड़ ।


1
रिटर्न स्टेटमेंट के साथ ब्रेक को बदलने की तुलना में एक संभावित बेहतर विकल्प ParallelLoopState's Stop () और ब्रेक () है। blogs.msdn.com/b/pfxteam/archive/2009/05/27/9645023.aspx
जेसनकोडर

@JasonCoder उनमें से कोई भी continueयद्यपि के बराबर नहीं है।
होगा

1
@ सही है, यही वजह है कि मैंने कहा कि ब्रेक। रिटर्न स्टेटमेंट जारी रखने के स्थान पर जारी रखें
जेसन कोडर

@ जैसनकोडर - आह। मैं गलत समझा कि तुम क्या मतलब है, जो।
होगा

-1

जारी रखने के लिए इसका मतलब है कि बाकी ब्लॉक को छोड़ दें और अगले आइटम पर जाएं। तो, आप बाकी ब्लॉक के विपरीत स्थिति को लागू करके जारी रख सकते हैं।

उदाहरण के लिए, प्रश्न में कोड के रूप में फिर से लिखा जाएगा:

Parallel.ForEach(items, parallelOptions, item =>
{
    //Skip an item by applying the opposite condition used for continue on all items until the end of the foreach

    if (isTrue) 
    {
      //Do what you want to do for all items
    }

});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.