1
A
回答
3
如果工作线程是Task<TResult>
,那么您可以从Task<TResult>.Result
属性检索结果。
如果工作线程为BackgroundWorker
,那么您可以从传递给BackgroundWorker.RunWorkerCompleted
的参数对象中的 RunWorkerCompletedEventArgs.Result
属性检索结果。
如果工作线程是通过Delegate.BeginInvoke
执行的ThreadPool
线程,那么即使代理已完成,也可以通过调用EndInvoke
来检索结果。
如果工作线程是Thread
,或通过ThreadPool.QueueUserWorkItem
执行ThreadPool
线程,那么你必须“回报”的结果通过设置参数的子对象,通过使用Lambda绑定变量,或者使用全局变量。
0
这取决于。
什么是主线程?
它对数据有什么作用?
例如,在WinForms中,可以调用Invoke
方法在主线程上以数据为参数运行回调。
0
它取决于线程是如何创建的以及主线程是什么类型的线程。如果是WinForms或WPF线程,最简单的方法是在完成工作线程后,使用主线程的SynchronizationContext
在主线程上执行操作。
void StartWorker() {
var context = SynchronizationContext.Current;
ThreadPool.QueueUserWorkItem(WorkerThread, context);
}
void WorkerThread(object state) {
var context = (SynchronizationContext)state;
...;
context.Post(WorkerDone, ...);
}
void WorkerDone(object state) {
// back on UI thread
}
相关问题
- 1. 在Java中,如何将对象从工作线程传递回主线程?
- 2. 如何将对象从Android中的其他线程传递回主线程?
- 3. C#多线程服务器。将对象传递给主线程
- 4. C# - 将数据从ThreadPool线程传递回主线程
- 5. 如何将对象从主线程传递到java中的另一个线程
- 6. QT多线程数据从主线程传递给工作线程
- 7. C++传递对象给一个线程
- 8. 将对象传递给线程并在线程运行后将其取回
- 9. 将本地新对象传递给线程,线程安全吗?
- 10. 如何将参数传递给c多线程中的线程
- 11. 将结果从已取消的BackgroundWorker线程传递回主线程
- 12. 从工作线程调用主线程回调函数
- 13. 如何从Java中的工作线程访问主线程?
- 14. 如何从工作线程检查主线程的属性值?
- 15. 与主线程沟通工作线程
- 16. 如何从命令行传递VertxOptions(如工作线程)
- 17. c#多线程,传递对象到另一个对象
- 18. 如何将线程对象传递给新的活动,并将其返回到
- 19. Iphone:传递对象和多线程
- 20. 通过引用线程传递对象
- 21. WPF:在UI线程和后台线程之间传递对象
- 22. 将结构对象作为参数传递给线程
- 23. 如何将信息从ThreadPool.QueueUserWorkItem传递回UI线程?
- 24. c#回调主线程
- 25. 如何回应主线程?
- 26. 将事件从主线程传递给工作线程并等待它是否安全?
- 27. 检测对象何时传递给C++中的新线程?
- 28. 将“this”传递给线程C++
- 29. C++ //将Boost :: array传递给Boost ::线程
- 30. C#子线程仍在工作,即使主线程退出
哪个版本的C#? – 2010-08-17 00:27:03