簡體   English   中英

任務已取消

[英]A task was canceled

我正在執行任務。 關閉窗口時,我正在嘗試使用取消令牌源來取消任務。 每次關閉窗口時都不會發生此錯誤。 只是有時。 請看看我收到的錯誤

在此處輸入圖片說明

    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();
    }

在運行代碼時,請檢查取消是否在掛起之前和之后以及之間。 這樣,如果在操作過程中取消了下一個Dispatcher函數,則不會執行它。

        while (true)
        {
            if (dotIndicatorTokenSource.IsCancellationRequested)
            {
                break;
            }

            Dispatcher.Invoke(() =>
            {
                connectionIndicatorDotImg.Visibility = Visibility.Hidden;
            });
            Thread.Sleep(halfPeriod);

            if (dotIndicatorTokenSource.IsCancellationRequested)
            {
                break;
            }

            Dispatcher.Invoke(() =>
            {
                connectionIndicatorDotImg.Visibility = Visibility.Visible;
            });

            Thread.Sleep(halfPeriod);

            if (dotIndicatorTokenSource.IsCancellationRequested)
            {
                break;
            }

        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM