2012-02-28 99 views
2

我正在使用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; 
} 
+3

你的问题是什么? – 2012-02-28 02:02:38

+0

如果不知道SomeFunction2正在做什么(即产生另一个线程),则无法回答。 – shanabus 2012-02-28 02:48:40

+0

为什么要产生另一个线程,然后等待它完成?你想实现什么? – BrokenGlass 2012-02-28 02:49:08

回答

2

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

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

让我知道如果你需要一些帮助,但这里是使用后台工作者的一个很好的例子。

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

+0

只有一个线程。一些function2将执行它的任务,然后将返回true/false,我需要传回给调用者。所以从你的解释,我可以拿出thread.join? – 2012-02-28 15:36:41

+0

感谢您的信息,看完你的链接后,我有一个想法,我想要做的。 – 2012-02-28 16:03:51

3

假设你想返回ok之前等待的线程完成(捕获的变量ok设置为一个新值),那么它看起来对我好。

0

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