में समाप्त होने पर सभी कार्यों को कैसे रोकें मेरे पास अलग-अलग फाइलों से पढ़ने और उनमें एक शब्द खोजने के लिए अलग-अलग कार्य हैं। मैं उन्हें एक कार्य सरणी जो मैं निम्नलिखित के रूप में waitAny विधि के साथ शुरू में डाल दिया है:सी #
foreach (string file in filesList)
{
files[i] = Task.Factory.StartNew(() =>
{
mySearch.Invoke(file);
});
i++;
}
System.Threading.Tasks.Task.WaitAny(files);
मैं जितनी जल्दी कार्यों में से एक खत्म के रूप में अन्य सभी कार्य बंद करना चाहते हैं (यह खत्म जब यह शब्द founds)। फिलहाल, वेटनी के साथ, मैं जान सकता हूं कि एक कार्य कब खत्म होता है, लेकिन मुझे नहीं पता कि मैं कैसे जान सकता हूं कि किसने समाप्त किया है और अन्य कार्यों को कैसे रोकें। इसे प्राप्त करने का सबसे अच्छा तरीका क्या होगा?
क्या पूरा कार्य कहीं परिणाम छोड़ देता है? इसमें कार्य की पहचान शामिल हो सकती है। पूरा करने वाला पहला कार्य एक ईवेंट भी सेट कर सकता है, प्रत्येक कार्य द्वारा अपने मुख्य लूप में चेक किया जाता है, जिससे अन्य सभी कार्यों को बाहर निकलने का कारण बनता है। – HABO
mySearch.Invoke में, उन्हें शब्द द्वारा शब्द के माध्यम से एक लूप पुनरावृत्ति होना चाहिए। फिर आप ध्वज जोड़ सकते हैं ताकि ध्वज सिग्नल होने पर लूप टूट जाए, जब कोई कार्य शब्द ढूंढता है, तो आप ध्वज को सिग्नल कर सकते हैं – ComfortablyNumb