我有一个启动函数,它调用一个函数,该函数根据设置是否成功返回一个布尔值。如果成功则为True,如果失败则为false。我想在新线程上启动该函数,然后检查函数的状态:这是代码。
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
答案 0 :(得分:5)
对于这种情况,有一个Task<T>
class在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)