我在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'足夠給你嗎? –