【发布时间】:2018-07-19 14:19:03
【问题描述】:
如果标题清楚,现在不要。下面是负责管理长操作的类的一段代码:
public class LongProcess
{
public delegate void RunningChangedEventHandler(bool running);
public event RunningChangedEventHandler RunningChanged;
private object runningLock = new object();
public bool Running
{
get { lock (runningLock) { return mRunning; } }
set
{
lock (runningLock)
{
RunningChanged.Invoke(value);
value = mRunning;
}
}
}
public void start()
{
mWorker = new BackgroundWorker();
mWorker.DoWork += Bg_DoWork;
mWorker.RunWorkerAsync();
}
private void Bg_DoWork(object sender, DoWorkEventArgs e)
{
Running = true;
// Some things to do here ... but I need Running to be equals to true and it is not
}
}
在主程序中,我使用 LongProcess 来启动一些任务,它是通过报告进度等来完成的......
我面临的唯一问题是,我似乎无法将“正在运行”设置为 true。即使在调用 setter 之后,它仍然保持其旧值。
任何有关其工作原理的帮助和解释将不胜感激!
【问题讨论】:
标签: c# multithreading locking backgroundworker