Stop方法不能在另一個線程中修改字段isRunning,爲什麼?保持領域最新在多個線程修改和訪問在C#中?
這是MSDN的示例,但該字段僅由一個線程修改。
http://msdn.microsoft.com/en-us/library/x13ttww7(v=vs.110).aspx
以下是我的代碼。
public class Worker
{
private volatile bool isRunning;
public void Run()
{
ThreadPool.QueueUserWorkItem(DoSomething);
}
public void Stop()
{
this.isRunning = false;
}
private void DoSomething(object state)
{
this.isRunning = true;
while (this.isRunning)
{
Console.WriteLine("working...");
Thread.Sleep(1000);
}
Console.WriteLine("stopped.");
}
}
你在代碼中遇到了什麼異常? – 2013-04-23 07:10:55
我想修改多個線程中的字段並將值保持最新。 – 2013-04-23 07:31:49
但我測試了你的代碼,它確實是你想要的。也許你可以添加一些內聯評論來指出哪些功能無法按預期工作。 – 2013-04-23 07:32:47