나는이 코드를 가지고 있으며 CancellationToken의 사용에 대한 설명을하고 싶습니다.CancellationToken을 취소하면 CancellationToken 예외가 발생합니까?
나는 토큰 및 플래그 취소를 사용 사이의 차이에 대한이 질문을 읽어 눈치
Difference between CancellationTokenSource and exit flag for Task loop exit
한 가지가 예외에 대해 아무것도 언급하지 않는다는 것이다. 그래서 여기에 내 질문이있다. Disappearing() 메서드가 호출되면 TaskCanceledException()이 발생하게되고 이것이 플래그 대신 CancellationToken을 사용하는 좋은 이유가됩니까? 그 자체로
public partial class PhrasesFrame : Frame
{
CancellationTokenSource cts = new CancellationTokenSource();
public PhrasesFrame(PhrasesPage phrasesPage)
{
Device.BeginInvokeOnMainThread(() => ShowCards(cts.Token).ContinueWith((arg) => { }));
}
public void Disappearing()
{
cts.Cancel();
}
public async Task ShowCards(CancellationToken ct)
{
while (!ct.IsCancellationRequested)
{
await PickCard();
}
}
public async Task PickCard()
{
await ShowCard();
}
private async Task ShowCard()
{
await ShowPhrase();
await ShowDetail();
}
private async Task ShowPhrase()
{
while (App.pauseCard || timer1Seconds > 0)
{
try
{
await Task.Delay(1000, tokenSource1.Token);
}
catch (TaskCanceledException)
{
// do action
break;
}
}
당신은 문서 [CancellationToken.ThrowIfCancellationRequested] (https://msdn.microsoft.com/library/system.threading.cancellationtoken.throwifcancellationrequested (V = vs.110을)에서 .aspx) 예약비 CancellationToken –
을 취소 할 수 없습니다 –