[英]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.