快速多线程问题

本文关键字:问题 多线程 | 更新日期: 2023-09-27 18:06:32

我有一个启动函数,它调用一个函数,该函数根据设置是否成功返回一个布尔值。成功为真,失败为假。我想在一个新线程上启动这个函数,然后检查函数的状态:下面是代码。

System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(StartAdapter));
thread.Start();

我的问题是,在这种情况下,我将如何检查startadapter方法的返回状态?因为我的朋友告诉我,我将不知道返回状态,因为它是在另一个线程上启动的,但还在尝试:

System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(StartAdapter));
thread.Start();
bool result = StartAdapter();

将调用函数两次,这也是我不想要的。有人对此有什么见解吗?

在这种情况下,我如何检查从startadapter函数返回的布尔值?

。NET 3.5

快速多线程问题

对于这种情况,有Task<T>类在ThreadPool上执行(例如),并让您知道它完成后的返回值

只使用:


var task = TaskFactory<yourResultType>.StartNew(StartAdapter);
Action<yourResultType> actionAfterResult = ...; // whatever you have to do
task.ContinueWith(actionAfterResult);
// or:
var result = task.Result; // this will block till the result is computed
// or another one of the alternatives you can learn about on MSDN (see link above)