2013-11-20 2 views
-1

I'am. 작업을 통해 멀티 스레딩을 사용하려고합니다. 몇 가지 작업을 수행 할 수있는 일련의 작업이 있습니다. 나는 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) [C#을 .NET의 – mHelpMe

답변

0

C# 컴파일러는 다중 오버로드가있을 때 일반 대리인 형식을 항상 추론 할 수 없습니다. 원하는 경우,

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

을 ... 나 : 다음과 같이 StartNew() 전화를 조정 해보십시오

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

_indicator[i].Run()은 인수가없는 가정하고 enumSignal를 반환합니다.