Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 线程化并返回一个值_C#_Multithreading - Fatal编程技术网

C# 线程化并返回一个值

C# 线程化并返回一个值,c#,multithreading,C#,Multithreading,我正在使用C#和Visual Studio 2010。这可以吗,还是我需要更改它 public bool SomeFunction(string arg1) { bool ok = false; var firstThread = new Thread(delegate() { ok = SomeFunction2(arg1)

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

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

假设您想在返回
ok
之前等待线程完成(将捕获的变量
ok
设置为一个新值),那我觉得不错。

很好。​​​​​​​​​​​​​​​​​​​​​​​​​​​​

很好。​​​​​​​​​​​​​​​​​​​​​​​​​​​​

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

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

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


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

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

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


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

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

在不知道SomeFunction2正在做什么(即生成另一个线程)的情况下无法回答,为什么要生成另一个线程,然后等待它完成?你想实现什么?在不知道SomeFunction2正在做什么(即生成另一个线程)的情况下无法回答为什么要生成另一个线程,然后等待它完成?你想要实现什么?只有一个线程。一些function2将执行其任务,然后将传回true/false,我需要将其传回调用方。所以从你的解释,我可以拿出线程。加入?谢谢你的信息,在看了你的链接后,现在我知道我应该做什么了。只有一个线程。一些function2将执行其任务,然后将传回true/false,我需要将其传回调用方。所以从你的解释,我可以拿出线程。加入?谢谢你的信息,在看了你的链接后,现在我有了一个想法,我应该做什么。