Tôi đang cố gắng tìm ra một cách để xác minh rằng a thread BackgroundWorker là còn sống (tức là vẫn chạy Các chủ đề cơ bản được thực hiện như một vòng lặp vô hạn đơn giản:.IsBusy của BackgroundWorker có giống với "IsAlive" không?
while (AllConditionsMet())
{
DoSomeMagic();
Thread.Sleep(10000);
}
Điều gần gũi nhất với IsAlive()
tôi tìm thấy cho đến nay là IsBusy bất động sản, nhưng cho rằng giấc ngủ thread của tôi() s hầu hết thời gian, tôi không chắc chắn liệu điều này sẽ làm công việc
tôi có thể đếm trên IsBusy làm:.
if (!myWorker.IsBusy)
RestartWorker();
hoặc tôi đang gọi cho sự cố?
nếu isBusy là sai Backgroundworker không làm một công việc, vì vậy bạn không gặp rắc rối bằng cách sử dụng mã hiển thị. Chỉ có phương thức "RestartWorker()" là sai, bởi vì Worker chưa được bắt đầu. Nhưng đó là một điều ngôn ngữ hơn là một vấn đề lập trình. – jAC
Bạn đang yêu cầu sự cố nếu bạn triển khai mã trong chuỗi để tự khởi động lại. Bạn sẽ được tốt hơn, phát hiện một điều kiện thất bại, kết thúc tha đề và khởi động lại một chủ đề hoàn toàn mới. Nếu không, bạn rất có thể có một tình huống bế tắc. –