首页 / C# / c#-访问在运行时创建的任何后台工作程序
c#-访问在运行时创建的任何后台工作程序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-访问在运行时创建的任何后台工作程序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1704字,纯文字阅读大概需要3分钟。
内容图文
场景:我的应用程序中有一个DataGrid,其中在每一行爬行时,将在下面的texbox中填充值.我将更新值,然后单击“保存”,此过程将花费更多时间.
因此,我写了一个后台工作程序来使进程异步运行.当每一行都被单击时,将创建一个背景工作人员实例并完成该过程.在该更新过程中,用户将选择网格的第二行并更新该值.因此,这将创建另一个实例,并且该过程将在后台运行.
现在,当两个更新过程都在运行时,如果用户选择了网格的第一行,则应该显示一条消息,指出“过程仍在运行”.
//码:
‘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");
}
}
如何访问先前创建的backgroundworker实例并检查进程的状态并显示消息?
注意:可能有多个进程同时运行,所以我应该可以访问任何进程.
这可能吗?
解决方法:
您可以将创建的任何BackgrounWorker存储在列表中以随时引用它们,但也可以创建任务队列并在其中存储任何挂起的进程,因此任何时候您只有一个BackgroundWorker.
将BackgroundWorkers存储在列表中
创建一个List(Of BackgroundWorker),该列??表可以在代码中需要的任何地方访问.每次创建新的BackgroundWorker时,请将其添加到列表中:
mylist.Add(bw)
您以后有很多选择可以访问正确的backgroundworker.最简单的方法是创建自己的类,该类将具有一个标识符(例如DataGrid的行)和backgroundworker.这样,您的列表将属于此类,而不是BackgroundWorkers:
myClass.BackgroundWorkerProperty = bw
myClass.id = myId
myList.Add(myClass)
使用队列运行任务
创建一个队列,该队列的类型具有运行任务的信息.例如,DataGrid的行(如果足够的话)将是Integer(索引)类型,然后在每次运行backgroundworker时将其添加:
myQueue.Add(myRow)
每次后台工作人员完成时,请检查队列并运行下一个存储的任务.
内容总结
以上是互联网集市为您收集整理的c#-访问在运行时创建的任何后台工作程序全部内容,希望文章能够帮你解决c#-访问在运行时创建的任何后台工作程序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。