:C#을 여러 작업에 작업의 실행을 취소 그것은 내가 예를 들어, 여러 작업이있는 작업을 취소하고 싶습니다
private async Task<bool> myTask0() {
var val2 = await myTask2();
var val3 = await myTask3();
return true;
}
여기서
private async Task<bool> myTask1() {
//run some tasks in paralell
var myParallel= arrayValues.Select(fileBEanListItem => manageSrcFilesDownload().ToList();
return true;
}
private async Task<bool> myTask2() {
return await myTask3();
}
그래서 myTask0
의 모든 작업을 취소 할 수있는 옵션을 제공하고 싶습니다. 중단하십시오!
내가 노력하고 있어요 : 해결책이 있습니까
var ts = new CancellationTokenSource();
CancellationToken ct = ts.Token;
await Task.Factory.StartNew(async() => {
await myTask0();
},ct);
와 나는 닫을 필요가있을 때, 나는 ts.Cancel(true);
하지만 효과는, 작업 어쨌든 실행되고 있지 사용합니다.
취소 토큰은 일반적으로 외부 중단으로부터 요청되는 신호입니다. 그러나 루틴 내부에서 중단을 처리해야합니다. 적어도'BackGroundWorker'에서는 그렇습니다. [Here] (https://msdn.microsoft.com/de-de/library/dd997396(v=vs.110) .aspx)는 그 예입니다. 도움이 될 수 있습니다. –
토큰을 메서드에 전달한 다음이를 확인하여 실행을 종료해야합니다. 이 게시물을 확인해보십시오. https://blogs.msdn.microsoft.com/dotnet/2012/06/06/async-in-4-5-enabling-progress-and-cancellation-in-async-apis/ – juharr
A 취소 토큰은 강제 취소 할 수 없습니다. 작업 내에서 토큰을 수시로 검사하고 취소가 요청되면 작업을 종료해야합니다. – Enigmativity