2
작업을 실행 중입니다. 창을 닫을 때 취소 토큰 원본을 사용하여 작업을 취소하려고합니다. 창을 닫을 때마다 오류가 발생하지 않습니다. 가끔씩 만. 난 당신이 코드를 실행하면 취소가 이전과 이후에 출원되어 있는지 확인하고, 그 사이에작업이 취소되었습니다.
private CancellationTokenSource dotIndicatorTokenSource;
private void BlinkDotIndicator()
{
var halfPeriod = 200;
dotIndicatorTokenSource = new CancellationTokenSource();
Task.Factory.StartNew(() =>
{
while (true)
{
Dispatcher.Invoke(() =>
{
connectionIndicatorDotImg.Visibility = Visibility.Hidden;
});
Thread.Sleep(halfPeriod);
Dispatcher.Invoke(() =>
{
connectionIndicatorDotImg.Visibility = Visibility.Visible;
});
Thread.Sleep(halfPeriod);
if (dotIndicatorTokenSource.IsCancellationRequested)
{
break;
}
}
}, dotIndicatorTokenSource.Token);
}
private void Window_Closing(object sender, CancelEventArgs e)
{
if (dotIndicatorTokenSource != null)
dotIndicatorTokenSource.Cancel();
}
아. 그 논리에 이어, 결국 취소를 확인해야 할 필요가 있습니까? –
어. 아니? 그렇지 않아. 하지만 잠이 든다. 그래서 그것은별로 중요하지 않습니다. 안전하지 않으시겠습니까? 그것은 4 줄의 코드입니다. 그리고 당신은 다음 단계로 넘어 가지 않습니다. –