线程并返回一个值

时间:2012-02-28 01:58:20

标签: c# multithreading

我正在使用C#和Visual Studio 2010.这样可以,还是需要更改它?

public bool SomeFunction(string arg1)
{
    bool ok = false;
    var firstThread = new Thread(delegate()
                                     {
                                         ok = SomeFunction2(arg1);
                                     });

    firstThread.Start();
    firstThread.Join();

    return ok;
}

4 个答案:

答案 0 :(得分:3)

假设您想在返回ok之前等待线程完成(将捕获的变量ok设置为新值),那么它对我来说很好。

答案 1 :(得分:2)

我不确定在另一个线程上运行多长时间 - 但是启动线程然后加入它会让我感到困惑,因为join调用导致调用线程被阻塞,直到另一个完成。

但是,如果您确实需要在另一个线程上运行该进程,请查找BackgroundWorker,因为它将使多线程变得非常容易。您附加到事件以管理后台线程,进度报告,取消和完成。

如果您需要帮助,请告诉我,但这是使用后台工作人员的一个很好的例子。

http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx

答案 2 :(得分:0)

没关系。

答案 3 :(得分:0)

您的确切代码没有多大意义。但是如果你有一些理由在另一个线程上运行代码,那么这应该没问题。尽管使用返回值的Task可能更好。