2013-11-20 84 views
-1

我在C#.Net 4.5中創建應用程序。我正嘗試通過任務使用多線程。我有一系列的任務可以運行一些過程。我希望任務返回一個名爲enumSignal的枚舉。但是我不知道該怎麼做,下面的代碼是我的嘗試。C#任務返回值

它突出顯示了「_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

你在TaskFactory中有兩個StartNew方法嗎? –

+0

'_indicator [i] .Run'的類型是什麼? –

+0

是的,這是說什麼,但我不明白爲什麼。 System.Threading.Tasks.TaskFactory.StartNew (System.Func )和System.Threading.Tasks.TaskFactory.StartNew(System.Action) – mHelpMe

回答

0

當存在多個重載時,C#編譯器不能總是推斷泛型委託類型。嘗試調整您的通話StartNew()如下:

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

...或者,如果你喜歡:

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

這是假設_indicator[i].Run()沒有參數和返回enumSignal