c# – 完成后合并两个后台工作人员的结果

c# – 完成后合并两个后台工作人员的结果,第1张

概述我有两个背景线程 Worker = new BackgroundWorker();Worker.DoWork += new DoWorkEventHandler(GetQuery);Worker.RunWorkerCompleted += GetQuery_RunWorkerCompleted;Worker.RunWorkerAsync();Worker2012 = new Backgr 我有两个背景线程

Worker = new BackgrounDWorker();Worker.DoWork += new DoWorkEventHandler(Getquery);Worker.RunWorkerCompleted += Getquery_RunWorkerCompleted;Worker.RunWorkerAsync();Worker2012 = new BackgrounDWorker();Worker2012.DoWork += new DoWorkEventHandler(Getquery2012);Worker2012.RunWorkerCompleted += Getquery2012_RunWorkerCompleted;Worker2012.RunWorkerAsync();

工作线程中的两个方法都返回数据表

现在我的任务是我需要将这两个数据表合并为一个

因为这个原因我在第一个任务的runcompletion中这样做

voID Getquerys_RunWorkerCompleted(object sender,RunWorkerCompletedEventArgs e){   do{} while(Worker2012.IsBusy);   //Merge Datatables}

但由于某种原因,do while循环似乎处于无限循环中.线程没有结束.有人可以告诉我我做错了什么.或者是否有更好的方法来等待第二个工作线程完成,以便我可以合并数据.任何帮助,将不胜感激

解决方法 现在.NET 4.5已经出来了,我建议每个人都使用Task.Run而不是BackgrounDWorker,因为:

var task1 = Task.Run(() => Getquery());var task2 = Task.Run(() => Getquery2012());var datatables = await Task.WhenAll(task1,task2);// Merge databases

Task.Run在各方面都优于BackgrounDWorker,当做任何复杂的事情(即协调两个后台 *** 作)时,这一点尤为明显.

总结

以上是内存溢出为你收集整理的c# – 完成后合并两个后台工作人员的结果全部内容,希望文章能够帮你解决c# – 完成后合并两个后台工作人员的结果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1218456.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存