2012-08-27 2 views
1

런타임시 가끔 작업이 시작되지 않는 경우가 있는데이 경우 Task.Factory.StartNew이 호출됩니다. 나는 디버거에서 특별히 다룰 예정이지만 어떤 이유로 작업이 실행되지 않습니다. 이 문제는 산발적으로 발생하며 때로는 작업이 시작되고 때때로 그렇지 않습니다.Task.Factory.StartNew가 항상 작업을 시작하지는 않습니다

Task.Factory.StartNew(() => 
         { 
          Extract(fileName); 
         }, TaskCreationOptions.LongRunning); 

     private static void Extract(String fileName) 
     { 
    Trace.WriteLine("Extract------------------  ---------------  ---"); 
     } 
+1

어떻게 실행되지 않는지 확인합니까? – usr

+0

출력 창에 Trace.WriteLine이 인쇄되지 않습니다. – user1615362

+0

언제 인쇄 할 예정입니까? 이것은 작업이 종료 된 후에 만 ​​보장됩니다. – usr

답변

1

작업 코드 실행하지만, 그렇지 않은 (항상)이기 때문에 당신이 출력을 표시되지 않는 것을 그것은 가능성은 화면/파일/어떤 플러시된다.

WriteLine 후에 Trace.Flush 번으로 전화 해보세요.

+0

아니요, OP에는 간단한 예제가 있습니다. 실제 스레드 자체는 많은 작업을 수행합니다. – user1615362

+1

내 추측에 따르면 다른 것들 중 하나가 뭔가 잘못되었습니다. – solublefish

+0

Trace.WriteLine을 VS 출력 창에 쓰지 않고 추적했습니다. 어떻게 될지 모르겠다. ... – user1615362

0

나는 비슷한 문제에 직면 해왔다. 단 몇 분만에 코드를 뚫고 나간다. 그래서 Task.StartNew는 ThreadPool을 사용합니다. 사용 가능한 태스크가 없다면 지연과 이유가 있습니다. 격리 테스트를 통해이 오류를 찾을 수 없었습니다. 항상 충분한 스레드가 있기 때문입니다. 수영장에서. o.O MultiThreading fun :) 클래스와 같은 고유 한 스레드 풀을 만들고 관리하여이 문제를 해결할 수 있습니다.

관련 문제