在Stack Overflow問題和一些Google搜索問題上搜索後,我仍然沒有得到它。我知道你可以使用「Thread.isAlive()」方法檢查單個線程是否正在運行,但是我想檢查一個特定的「FooThread」是否仍然在當前進程的所有正在運行的線程之間運行,如果沒有,請調用啓動它的方法。從ProcessThreadCollection獲取正在運行的線程名稱
//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一樣),但只有ID,我只知道線程名(「FooThread 「)不是ID,我如何檢查」FooThread「是否正在運行/活着?
預先感謝您
即使這是可能的,它不會是一個好主意。如果線程剛剛退出,您會認爲它仍在運行。這本質上是活潑的。跟蹤這些信息。當FooThread關閉時,不要。當它開始時,請注意。 – usr
你正在做一些非常非常錯誤的事情。任何「一個仍在運行測試的線程」都是沒用的,它可能不會在納秒後運行。好東西它不起作用。 –
這些評論很棒,但值得指出的是OP實際上檢查線程是否*運行。 – Slider345