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# – 完成后合并两个后台工作人员的结果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)