我正在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);
}
答案 0 :(得分:0)
当存在多个重载时,C#编译器不能总是推断通用委托类型。尝试按如下方式调整StartNew()
来电:
_taskFactory.StartNew((Func<enumSignal>)_indicator[i].Run)
...或者,如果您愿意:
_taskFactory.StartNew<enumSignal>(_indicator[i].Run)
这假定_indicator[i].Run()
没有参数并返回enumSignal
。