से नाम से थ्रेड चलाना स्टैक ओवरफ़्लो प्रश्नों और कुछ googling पर खोज करने के बाद, मुझे अभी भी यह नहीं मिल रहा है।प्रक्रिया थ्रेडकोलेक्शन
मुझे पता है कि आप "थ्रेड.इसएलीव()" विधि के साथ एक थ्रेड चल रहा है या नहीं, लेकिन मैं यह जांचना चाहता हूं कि वर्तमान प्रक्रिया से सभी चल रहे थ्रेड के बीच कोई विशेष "FooThread" चल रहा है या नहीं, और यदि नहीं, तो उस विधि को कॉल करें जो इसे शुरू करता है।
//somewhere in the code, on another Project/DLL inside solution
private void FooThreadCaller()
{
Action act =() => fooFunction();
Thread t = new Thread(new ThreadStart(act));
t.Name = "FooThread";
t.Start();
}
//...
Process proc = System.Diagnostics.Process.GetCurrentProcess();
ProcessThreadCollection threads = proc.Threads;
bool ThreadExists = false
foreach (ProcessThread item in threads)
{
// if item.Name == "FooThread", then ThreadExists = true...
// so, if !ThreadExists then call FooThreadCaller() and so on.
}
//...
के बाद से ProcessThread वर्ग एक "नाम" संपत्ति (System.Threading.Thread करता है) की तरह नहीं है, लेकिन केवल आईडी, और मैं केवल धागा नाम पता ("FooThread ") आईडी नहीं, मैं कैसे जांच सकता हूं कि" फू थ्रेड "चल रहा है या जिंदा है?
अग्रिम में धन्यवाद
भले ही यह संभव था, यह एक अच्छा विचार नहीं होगा। अगर थ्रेड बस बाहर निकलने की प्रक्रिया में था तो आप इसे अभी भी चलने के रूप में समझेंगे। यह स्वाभाविक रूप से कठोर है। इस जानकारी को स्वयं ट्रैक करें। जब फूश्रेड बंद हो जाता है, तो नहीं। जब यह शुरू होता है, तो ध्यान दें। – usr
आप कुछ बहुत ही गलत कर रहे हैं। कोई भी "थ्रेड अभी भी चल रहा परीक्षण है" बेकार है, हो सकता है कि यह बाद में नैनोसेकंड नहीं चला रहा हो। अच्छी बात यह काम नहीं करती है। –
ये बहुत अच्छी टिप्पणियां हैं, लेकिन यह भी ध्यान देने योग्य है कि ओपी वास्तव में यह देखने के लिए जांच कर रहा है कि थ्रेड * नहीं चल रहा है या नहीं। – Slider345