Tôi đang sử dụng để kiểm tra điều kiện của một sợi với if(Thread.IsAlive)
. Biểu mẫu đang chạy trong chuỗi này. Đôi khi trong quá trình thực hiện, mặc dù biểu mẫu vẫn mở, cuộc gọi tới Thread.IsAlive dường như được đánh giá là sai. Tôi nghĩ để thực hiện kiểm tra tương tự với if(Thread.ThreadState==ThreadState.Running)
. Có đúng cách để làm không? Nếu không, công việc có thể xung quanh là gì?Thread.IsAlive and Thread.ThreadState == ThreadState.Running
Trả lời
msdn Thread.IsAlive Property đúng nếu chủ đề này đã được bắt đầu và chưa chấm dứt bình thường hoặc bị hủy bỏ; ngược lại, sai.
msdn Thread.ThreadState
- Chạy
Các chủ đề đã bắt đầu, nó không bị chặn, và không có ThreadAbortException chờ giải quyết. - StopRequested
- SuspendRequested
- nền
- Unstarted
- WaitSleepJoin
- Bị treo
- AbortRequested
Tôi nghĩ rằng bây giờ nó rõ ràng Running
là không giống như IsAlive
IsAlive là chủ yếu hữu ích khi bạn đang bắt đầu một sợi. if (! thread.IsAlive) thread.Start(); Đây không phải là một cách an toàn để xem liệu một chuỗi có chạy không vì có nhiều trạng thái giữa NOT STARTED và STARTED không bằng RUNNING. IsAlive thực sự chỉ bảo bạn đừng cố bắt đầu lại. – kingdango
Đây có phải là cách an toàn để kiểm tra định kỳ để đảm bảo luồng chưa thoát? –
Bị tạm ngưng dường như không còn là một chuỗi tuyến tính hợp lệ nữa. Bất cứ ai có thể giới thiệu một sự thay thế? – user2924019
- 1. Java Generics and numbers
- 2. EJB's and Threading
- 3. NSDirectoryEnumerator And Subfolders
- 4. MySQL AND Filemaker Pro?
- 5. Generics and System.Collections
- 6. C++ typedefs and enums
- 7. FindFirstFile and Junctions
- 8. Grails and Subdomains
- 9. Drools and Maps
- 10. contenteditable and emberjs
- 11. XML Diff and Merge
- 12. jeditable and rails 3
- 13. init and awakeFromNib
- 14. Jquery Draggable AND Resizable
- 15. UIManagedDocument and Core Data
- 16. Array.Copy and Array.ConstrainedCopy - C#
- 17. Java: .contains and .equals
- 18. PHPExcel and Text Wrapping
- 19. Mapview and Fragment
- 20. HttpWebRequest and gzip
- 21. C# Concurrency and Agents
- 22. Generics and Casting
- 23. appSettings and ConfigurationManager.AppSettings issue
- 24. Stackable Stack and Queue
- 25. Generics and java.beans.Introspector
- 26. AFNetworking and Cookies
- 27. Debug.Fail and Debug.Assert
- 28. __isoc99_scanf and scanf
- 29. NSMutableDictionary addition and KVO
- 30. SignalR and Joining Groups
@daveL: ngay cả khi tôi ghét nó khi tôi nói nó có vẻ cư xử như thế này. Nhưng vấn đề là tôi có thể thấy biểu mẫu đang chạy trên luồng đó trên màn hình của tôi, nhưng mã thread.isalive không được thực thi. –
Có vẻ như @ daveL có một thời gian khó khăn đối phó với sự mơ hồ, ít nhất nó có vẻ như vậy ...: p – kingdango