2012-10-12 3 views
4

을 삭제하거나 자기 파괴인가?어떻게 어떤 식 으로든 나는이 작업을 삭제 적이 작업을 제대로

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

또는 어떻게 든

var t = Task.Factory.StartNew(() => { DoSomeJob(); }, TaskCreationOptions.LongRunning); 

이후 삭제/nullizet처럼 사용하는 것이 좋습니다?

감사합니다. 당신이 그것을 삭제할 필요가 없습니다

+1

는 : 그것은 TPL 작업 개체에 폐기()를 호출하지 인정할인가요? (http://stackoverflow.com/questions/3734280/is-it-considered-acceptable-to-not-call- dispose-on-a-tpl-task-object) –

답변

3

, 당신을위한 정리 작업을 처리 할

+0

차갑다. 그 말을하는 MSDN 링크가 있습니까? –

+4

여기 풀러 설명을 제공하는 링크입니다 : http://blogs.msdn.com/b/pfxteam/archive/2012/03/25/10287435.aspx –

1

가비지 수집, 당신은 참조 t을 유지할 필요가 없습니다 .... 결국 배치됩니다. 당신이 의미하는 경우

3

당신은 그것을 취소하거나 중단, 또는 다른 방법으로이 완료되기 전에 실행을 중지 할 수 있습니다; 아니오, 실제로는 아닙니다 (현재 그대로). 취소 토큰 원본을 만들어 토큰을 작업에 전달해야하며 작업에서 실행중인 메서드는 취소되지 않았는지 주기적으로 검사해야합니다.

은 당신이 할 수있는 것은 일정 기간 대기하고 대기 작업을 취소하는 것입니다. 그러면 실행해야하는 "다음"작업을 계속 실행할 수 있습니다. 당신이 이런 짓을하면 내가 작업 자체 방법은 삭제를 확인합니다 경우 위에서 설명한 작업을 추가하지 않고, 그 방법은 아직 완료 될 때까지 실행됩니다, 당신은 단지 일찍 기다리고 중단됩니다 참고. 당신이 작업이 실행이 완료 된 후에는, 당신은 걱정하지 않아도 사용하는 자원을 청소에 대해 간단하게 고민하는 경우에

Related link

. 그것은 모두 자동으로 처리됩니다. 당신이 자신을 시도하고 폐기 할 경우

Related link

2

, 당신은 조심해야 할 것입니다. 여전히 실행 중 상태이면 다음 예외가 발생합니다.

A task may only be disposed if it is in a completion state (RanToCompletion, Faulted or Canceled) 

첫 번째 예제를 사용하는 것이 좋습니다.

관련
관련 문제