快速多线程问题

时间:2011-08-22 15:52:49

标签: c# multithreading .net-3.5

我有一个启动函数,它调用一个函数,该函数根据设置是否成功返回一个布尔值。如果成功则为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

1 个答案:

答案 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)