내 클래스에는 TaskCompletionSource<int>
을 사용하여 Task<int>
개체를 생성하는 메서드가 있습니다. 그런 다음 비동기 작업을 수행하고 결과를 설정합니다. 나는 작업의 ContinueWith
방법 여부를 신뢰할 수 있는지 여부를 알고 있어야합니다작업의 연속을 취소하는 방법은 무엇입니까?
public Task<int> CalculateAsync()
{
var source = new TaskCompletionSource();
DoSomeAsyncStuffAndSetResultOf(source);
source.Task.ContinueWith(t => Console.WriteLine("Is this reliable?"));
return source.Task;
}
이 CalculateAsync
메소드의 호출자가 생산 작업과 뭔가를 실행에서의 계속을 방지 할 수 있습니까?
오, 알겠습니다. 계속합니다 (호출자가 작업을 단순히 영원히 계속 실행하도록 강요 할 수는 없으며 완료하지 않는다고 가정 할 때). –
수정 사항을 본 후 댓글을 삭제했습니다. 작업 결과를 설정하기 전에 Dispose를 호출하면 어떻게됩니까? –
@ ŞafakGür : Task.Dispose의 문서에 따라 InvalidOperationException이 발생합니다. –