C#任务返回值

时间:2013-11-20 20:14:23

标签: c# multithreading

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

它突出显示“_taskFactory.StartNew(_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);
        }

1 个答案:

答案 0 :(得分:0)

当存在多个重载时,C#编译器不能总是推断通用委托类型。尝试按如下方式调整StartNew()来电:

_taskFactory.StartNew((Func<enumSignal>)_indicator[i].Run)

...或者,如果您愿意:

_taskFactory.StartNew<enumSignal>(_indicator[i].Run)

这假定_indicator[i].Run()没有参数并返回enumSignal