我在WPF中编写应用程序。我有一个主线程和另一个主线程 - 我计算了一些东西。在主线程中,我需要在完成附加线程后执行一个操作。我无法使用Join作为附加线程,因为我不想阻塞主线程。我如何等待完成第二个线程,同时不要阻塞主线程?WPF中的线程问题
2
A
回答
3
最简单的方法是使用backgroundworker并处理RunWorkerCompleted事件。
我也邀请您参加的 约瑟夫阿尔巴哈利的Threading in C# pdf
2
另一种简单的方法来看看第3部分是使用任务并行库和链中的多个任务,continuations。
虽然它不能免除你@康拉德的建议:请阅读the threading book。这很吸引人,而且完全值得努力。
+0
@Anvanka +1延续是一个非常好的选择 –
0
如果你创建你自己的线程,有工作线程调用回调方法时,它的完成:
public delegate void DoneDelegate (object calculationResults);
public class MyWorker
{
public DoneDelegate Done { get; set; }
public void Go()
{
object results = null;
// do some work
Done(results);
}
}
public class Main
{
public void StartWorker()
{
MyWorker worker = new MyWorker();
worker.Done = new DoneDelegate(DoneCallback);
System.Threading.Thread thread = new System.Threading.Thread(worker.Go);
thread.IsBackground = true;
thread.Start();
}
public void DoneCallback (object results)
{
// use the results
}
}
相关问题
- 1. WPF中的线程问题
- 2. WPF线程问题
- 3. WPF线程问题
- 4. WPF和多线程问题
- 5. WPF MVVM多线程问题
- 6. DirectShow/WPF线程问题
- 7. WPF中的易线程问题
- 8. WPF调度程序/线程问题
- 9. WPF UI更新线程问题
- 10. WPF定制BalloonTips问题与多线程
- 11. WPF线程问题更好选项
- 12. WPF - 事件线程,GUI更新问题
- 13. WPF RichTextBox文档创建线程问题
- 14. java中的线程问题
- 15. Java中的线程问题
- 16. JFrame中的线程问题
- 17. C#中的线程问题
- 18. Java中的线程问题
- 19. c中的线程问题#
- 20. Vb.net中的线程问题
- 21. android中的线程问题?
- 22. QT中的线程问题
- 23. 多线程访问C#中的WPF GUI#
- 24. 线程问题
- 25. 线程问题
- 26. 线程问题
- 27. 线程问题
- 28. 线程问题
- 29. 线程问题
- 30. 线程问题
嗯,我想这不会是最好的解决办法。我想取消这个额外的线程,当我点击取消按钮。我知道后台工作者有CancelAsync()方法,但是应该在后台工作者中完成的方法是独立运行的。我的意思是在这个函数中我没有可以打破的循环,但我只是调用一个系统函数来优化,我不能打破它。 – ravenik
@ravenik。不管您选择哪种解决方案,您是否都有这个问题? 'if(_bw.CancellationPending){e.Cancel = true;返回; }'设置'e.result'足够给你吗? –