我需要通知所謂的工作線程停止下一個可用oppertunity的工作。目前我使用這樣的事情:通知線程停止的選項
public void Run()
{
while (!StopRequested)
DoWork();
}
我所關注的是StopRequested被設置爲True在不同的線程。這安全嗎?我知道我不能鎖定布爾值。也許有一種不同的方式告訴線程需要停止。例如,我很樂意檢查Thread.CurrentThread.ThreadState == ThreadState.StopRequested
,但我不清楚如何設置線程狀態。
爲什麼你不能鎖定一個布爾值?無論如何,爲任何鎖定創建單獨的「對象」通常被認爲是很好的做法。 – 2009-07-30 18:36:25
我不能鎖定布爾,因爲它的值類型 - 我可以創建一個所謂的同步對象,除了在獲取/設置布爾標誌時鎖定它 - 但在我看來,鎖定在布爾應該是安全的,至少裏德科普塞同意 – 2009-07-30 18:58:44
是的,圍繞布爾鎖定應該是安全的。合作取消。如果Backgroundworker適合您正在執行的任務,則支持類似的概念。 – 2009-07-31 03:20:41