मैं इसे पूरा होने पर Task
फिर से चला रहा हूं। नीचे वह कार्य है जिसे मैं अपने आवेदन के Application_Start
में कॉल करता हूं।सी # में एकाधिक कार्यों को कैसे चलाएं और इन कार्यों को पूरा करने पर कोई ईवेंट प्राप्त करें?
private void Run()
{
Task t = new Task(() => new XyzServices().ProcessXyz());
t.Start();
t.ContinueWith((x) =>
{
Thread.Sleep(ConfigReader.CronReRunTimeInSeconds);
Run();
});
}
मैं कई कार्यों को चलाने के लिए चाहता हूं, संख्या जो web.config ऐप सेटेटिंग से पढ़ी जाएगी।
मैं कुछ इस तरह कोशिश कर रहा हूँ,
private void Run()
{
List<Task> tasks = new List<Task>();
for (int i = 0; i < ConfigReader.ThreadCount - 1; i++)
{
tasks.Add(Task.Run(() => new XyzServices().ProcessXyz()));
}
Task.WhenAll(tasks);
Run();
}
क्या सही तरीका यह करने के लिए?
अगर आप/अपनी खुद की taskrunner निर्माण उस वर्ग मैं शायद पहला काम का उपयोग करके समाप्त होने की प्रतीक्षा करता हूँ विस्तृत करने खुदाई करने के लिए नहीं करना चाहते हैं 'tasks.First()। प्रतीक्षा करें(); 'और फिर थ्रेड के साथ थोड़ी देर लूप का उपयोग करें। शेष कार्यों की स्थिति का निरीक्षण करने के लिए सो जाओ। –
आप पूर्व निर्धारित समय अंतराल में बार-बार कोड का एक टुकड़ा चलाने के लिए चाहते हैं? सटीक कारण की तरह लगता है कि 'टाइमर' वास्तव में मौजूद है। और निश्चित रूप से, यदि आप इसके साथ रहना चाहते हैं, तो बस 'कार्य' के परिणाम के लिए अपनी निरंतरता को बाध्य करें। सब कुछ और सबकुछ पहले जैसा ही काम करेगा। – Luaan
आपको या तो 'कार्य का इंतजार करना होगा। जब सभी (कार्य); 'या' कार्य। प्रतीक्षा करें (कार्य); '। एक एसिंक कॉल है और इसकी प्रतीक्षा की जानी चाहिए, दूसरा एक सामान्य कार्य है जिसे एक तुल्यकालिक संदर्भ में बुलाया जा सकता है। बेशक आप बदसूरत 'कार्य के लिए भी जा सकते हैं। जब सभी (कार्य) .Wait();' – Dorus