मैं Task
एस श्रृंखला बनाना चाहता हूं, फिर श्रृंखला को समानांतर में शुरू करना चाहता हूं।श्रृंखला कार्य करने के लिए उचित तरीका
var taskOrig = new Task(() => { });
var task = taskOrig;
foreach (var msg in messages)
{
task=task.ContinueWith(t => Console.WriteLine(msg));
}
taskOrig.Start();
सब कुछ एक छोटे से पूर्णतावादी को छोड़कर ठीक काम करता है मेरे अंदर खाली विधि पहले () => { }
निष्पादित होने पसंद नहीं करता: इस स्निपेट मेरे सवाल का वर्णन करने के लिए है।
क्या इससे बचने का कोई तरीका है?
मुझे समझ में आता है कि यह प्रदर्शन को मुश्किल से प्रभावित करता है (जब तक कि आप इसे वास्तव में अक्सर नहीं करते), लेकिन फिर भी। मेरे मामले में प्रदर्शन मामलों, इसलिए जांच करें कि प्रत्येक पुनरावृत्ति में कार्य मौजूद है या नहीं, यह करने का तरीका नहीं है।
if(messages.Length > 0)
{
Task task = new Task(t => Console.WriteLine(messages[0]));
for(int i = 1; i < messages.Length; i++)
{
task = task.ContinueWith(t => Console.WriteLine(messages[i]));
}
task.Start();
}
"मेरे मामले में प्रदर्शन महत्वपूर्ण है अत: पता चल सके कि काम मौजूद है में हर यात्रा नहीं है
एक अन्य विकल्प कुछ इस तरह उपयोग करने के लिए किया जाएगा इसे करने का तरीका। ": जो समय लगता है वह वास्तव में कार्य को निष्पादित करने की तुलना में नगण्य है। जब तक आप वास्तव में एक प्रदर्शन हिट नहीं मापा है, यह स्पष्ट रूप से समयपूर्व अनुकूलन का मामला है। –
@ थॉमस लेवेस्क आप शायद सही हैं, मैंने सोचा कि शायद मुझे 'टास्क' बनाने एपीआई में कुछ याद आया। मुझे बाद में प्रदर्शन हिट मापने का मौका मिलेगा। – Anri
आपको टीपीएल डेटाफ्लो दिलचस्प – sll