Sau khi tìm kiếm các câu hỏi về Stack Overflow và một số googling, tôi vẫn chưa nhận được.Nhận chủ đề chạy theo tên từ ProcessThreadCollection
Tôi biết rằng bạn có thể kiểm tra xem một chuỗi có đang chạy với phương thức "Thread.isAlive()" không, nhưng tôi muốn kiểm tra xem "FooThread" cụ thể vẫn đang chạy giữa tất cả các chuỗi đang chạy từ quá trình hiện tại hay không và nếu không, hãy gọi phương thức khởi động nó.
//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.
}
//...
Kể từ khi lớp ProcessThread không có một "Tên" tài sản (như System.Threading.Thread không) nhưng chỉ ID, và tôi chỉ biết tên chủ đề ("FooThread ") không phải là ID, làm thế nào tôi có thể kiểm tra xem" FooThread "đang chạy/còn sống?
Cảm ơn bạn trước
Thậm chí nếu điều này là có thể, nó sẽ không là một ý tưởng tốt. Nếu luồng chỉ đang trong quá trình thoát, bạn sẽ thấy nó vẫn đang chạy. Điều này vốn đã rất hiếu kỳ. Tự mình theo dõi thông tin này. Khi FooThread tắt, làm cho không. Khi nó bắt đầu, hãy ghi chú. – usr
Bạn đang làm điều gì đó rất, rất sai. Bất kỳ "là một thread vẫn chạy thử nghiệm" là vô dụng, nó có thể không được chạy một nano giây sau đó. Điều tốt nó không hoạt động. –
Đây là những nhận xét tuyệt vời, nhưng cũng đáng để chỉ ra rằng OP thực sự kiểm tra xem chuỗi có * không * đang chạy hay không. – Slider345