सी # में एक असीमित समसामयिक तरीका है? जहां आईडी (रों) के बजाय का उपयोग कर Parallel.ForEachअसिंक्रोनस फोरैच
//This Gets all the ID(s)-IEnumerable <int>
var clientIds = new Clients().GetAllClientIds();
Parallel.ForEach(clientIds, ProcessId); //runs the method in parallel
static void ProcessId(int id)
{
// just process the id
}
कुछ एक foreach होना चाहिए की विधि द्वारा अतुल्यकालिक रूप से कार्रवाई की जाएगी, लेकिन
foreach(var id in clientIds)
{
ProcessId(id) //runs the method with each Id asynchronously??
}
एसिंक्रोनस रूप से चलाता है मैं चलाने के लिए कोशिश कर रहा हूँ कंसोल में कार्यक्रम, कंसोल बंद करने से पहले सभी आईडी (ओं) को प्रसंस्करण पूर्ण करने के लिए प्रतीक्षा करनी चाहिए।
तरह से किया जा होगा तुम यहाँ सुनिश्चित नहीं हैं कि क्या कह रहे हैं के लिए होगा। मुझे लगता है कि आप एक बहु थ्रेडेड फोरैच के लिए पूछ रहे हैं लेकिन आप 'समानांतर' फोरेच '(जो बहु-थ्रेडेड हैं) का उपयोग नहीं करना चाहते हैं? – Igor
ठीक है, क्या आपका 'ProcessId' फ़ंक्शन दूसरे उदाहरण में असीमित है? क्या यह एक 'कार्य' वापस करता है? आप केवल "एसिंक्रोनस फ़ंक्शन" नहीं कर सकते हैं, आपको इसे अतुलनीय रूप से लिखना है या इसे किसी अन्य थ्रेड पर निष्पादित करना है (जैसे 'समांतर। फोरएच' करता है) –
@ इगोर 'समानांतर। फॉरएच' असीमित नहीं है, यह समकालिक रूप से समानांतर में कार्यों को संसाधित करता है । इसके अलावा यह async/प्रतीक्षा का समर्थन नहीं करता है, इसलिए दोनों को मिश्रण करने से सावधान रहें। –