나는 다양한 작업에 대한 토큰을 가지고 더 나은 내가 사용할 수있는 취소의 통지, 자신의 취소를 관리 할 필요가? "등록 취소"할 방법이 있습니까?CancellationToken 등록 취소 조치
TaskCompletionSource로 해결 방법을 생각했습니다. 그러나 그것이 잘 작동하는지 나는 모른다. 이 방법을 해결하는 가장 좋은 방법은 무엇입니까?
나는 다양한 작업에 대한 토큰을 가지고 더 나은 내가 사용할 수있는 취소의 통지, 자신의 취소를 관리 할 필요가? "등록 취소"할 방법이 있습니까?CancellationToken 등록 취소 조치
TaskCompletionSource로 해결 방법을 생각했습니다. 그러나 그것이 잘 작동하는지 나는 모른다. 이 방법을 해결하는 가장 좋은 방법은 무엇입니까?
CancellationToken.Register
은 CancellationTokenRegistration
인스턴스를 반환합니다. 해당 인스턴스에서 Dispose
으로 전화하면 등록이 취소됩니다.
이 문제를 놓쳤습니다. 감사합니다. 이것이 토큰으로 직접 할 수 있다면 좋을 지 모르지만 ... –
정말로 등록을 실행 취소 할 방법이 없습니다.
var cancellationTokenSource = new CancellationTokenSource();
basicTask = Task.Factory.StartNew(() => {
for (;;) {
var z = DateTime.Today.ToString();
}
}, cancellationTokenSource.Token);
var basicTask2 = Task.Factory.StartNew(() => {
for (;;) {
var z = DateTime.Today.ToString();
}
}, cancellationTokenSource.Token);
//var usingThisCodeWillResultInADeadlock = cancellationTokenSource.Token.Register(() => { });
//usingThisCodeWillResultInADeadlock.Dispose();
cancellationTokenSource.Cancel();
basicTask.Wait();
교착 상태가 발생합니다 주석을 해제하십시오 처분 방법은 콜백을 제거하는 동안 토큰은 여전히 등록이 있다는 정보가 포함되어 있습니다. // 유래 :
당신이 보여주고 싶었던 것이 확실하지 않습니다 - 당신의'basicTask2'는 사용되지 않습니다,'basicTask'는 무한 루프를 가지고 있습니다. 그것을 취소하거나 취소하고, (정의에 의해) 끝나지 않는 작업을 기다립니다. 이 두 줄의 주석 처리를 제거해도 아무 것도 변경되지 않습니다. – greenoldman
이 2 개 링크 중 하나는 http://social.msdn.microsoft.com/Forums/en-US/parallelextensions/thread/c2f614f6-c96c-4821-84cc-050b21aaee45 HTTP 도움이 될 것입니다. co.kr/questions/5299903/cancellationtokensource-cancelfalse – MethodMan
도움이되지만 문제를 해결하지 못합니다. –