【发布时间】:2013-09-03 08:52:01
【问题描述】:
场景:我的应用程序中有一个DataGrid,其中onclikcing 每行,值填充在下面的texboxes 中。我将更新这些值,当点击保存时,该过程需要更多时间才能完成。
所以我编写了一个后台工作程序来使进程运行asynchronously。当每一行被点击时,一个backgroundworker 的实例被创建并且该过程完成。在该更新期间,用户将选择网格的第二行并更新该值。所以这将创建另一个实例,并且该进程将在后台运行。
现在,如果用户选择网格的第一行,则当两个更新进程都在运行时,应该会显示一条消息,显示“进程仍在运行”。
//代码:
' OnClick 事件
var bw = new BackgroundWorker();
bw.WorkerReportsProgress = true;
bw.DoWork += delegate {
SaveDetails();
};
bw.RunWorkerCompleted += delegate {
MessageBox.Show("Completed");
};
bw.RunWorkerAsync();
'保存方法
public void SaveDetails()
{
for (int i = 0; i < 10;i++ )
{
System.Threading.Thread.Sleep(5000);
MessageBox.Show("Hi");
}
}
如何访问之前创建的后台工作实例并检查进程状态并显示消息?
注意:可能有多个进程同时运行,所以我应该可以访问任何进程。
这可能吗?
【问题讨论】:
标签: c# .net multithreading winforms backgroundworker