Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.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#Net 4.5。我试图通过任务使用多线程。我有一系列的任务可以运行一些进程。我希望任务返回一个名为enumSignal的枚举。但是我不知道该怎么做,下面的代码是我的尝试 它突出显示行“\u taskFactory.StartNew(\u indicator[I].Run)”,并显示以下方法之间调用不明确的消息 public void RunIndicators() { _taskFactory = new TaskFactory();

我正在申请C#Net 4.5。我试图通过任务使用多线程。我有一系列的任务可以运行一些进程。我希望任务返回一个名为enumSignal的枚举。但是我不知道该怎么做,下面的代码是我的尝试

它突出显示行“\u taskFactory.StartNew(\u indicator[I].Run)”,并显示以下方法之间调用不明确的消息

 public void RunIndicators()
        {
            _taskFactory = new TaskFactory();

            Task<enumSignal>[] taskIndicator = new Task<enumSignal>[_indicator.Length];

            for (int i = 0; i < taskIndicator.Length; i++)
            {

                taskIndicator[i] = _taskFactory.StartNew(_indicator[i].Run);

            }
            Task.WaitAll(taskIndicator);
        }
public void RunIndicators()
{
_taskFactory=新的taskFactory();
任务[]任务指示器=新任务[_indicator.Length];
对于(int i=0;i
当存在多个重载时,C#编译器不能总是推断泛型委托类型。尝试调整
StartNew()
调用,如下所示:

_taskFactory.StartNew((Func<enumSignal>)_indicator[i].Run)
\u taskFactory.StartNew((Func)\u指示符[i]。运行)
…或者,如果您愿意:

_taskFactory.StartNew<enumSignal>(_indicator[i].Run)
\u taskFactory.StartNew(\u指示符[i].Run)

这假设
\u指示符[i]。Run()
没有参数,并返回一个
enumSignal

您在TaskFactory中有两个StartNew方法吗?
\u指示符[i]的类型是什么。Run
是这样说的,但我不明白为什么。System.Threading.Tasks.TaskFactory.StartNew(System.Func)和System.Threading.Tasks.TaskFactory.StartNew(System.Action)可能与_指示符[I]重复。运行时应返回枚举信号