簡體   English   中英

如何取消使用等待的Windows Phone任務

[英]How to cancel windows phone task that uses await

我有這段代碼來啟動一個Task線程,該線程將在可用時調用一種方法以讀取StreamSocket中的數據。 我也拿一個取消令牌。

await Task.Factory.StartNew(ProcessMessage, CancelToken);

但是在我調用此方法之后。

CancelToken.Cancel();

當我在StreamSocket中獲取新數據時,我的應用程序仍在運行ProcessMessage方法。 哪個不應該發生。 它認為是因為我用它等待。

取消令牌后,如何停止此任務?

發出CancellationToken.Cancel() ,取消令牌的每個副本上的IsCancellationRequested屬性都設置為true。 接收通知的對象可以以任何適當的方式響應。 典型的模式是在循環中的某處調用token.ThrowIfCancellationRequested()

因此,在您的ProcessMessage例程中,您需要

while (processing) 
{
    // carry on your processing...

    // Poll on this property if you have to do other cleanup before throwing. 
    if (token.IsCancellationRequested)
    {
        // Clean up here, then...
        token.ThrowIfCancellationRequested();
    }
}

您可以在MSDN文檔中找到有關實施等待取消的准則。

暫無
暫無

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

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