我有一個非常奇怪的問題,我不知道如何解決它。 我有這兩種方法在不同的類。 當CommandBar中的按鈕被按下時,第一個被觸發。WP8.1 - CancellationToken和異步仍然等待永遠,永不結束
編輯:我創建了兩個類似但更小的方法向您展示問題:
private async void runCode(object sender, RoutedEventArgs e)
{
BottomAppBar.IsEnabled = false;
object result = await endlessLoopTest();
BottomAppBar.IsEnabled = true;
}
private async Task<object> endlessLoopTest()
{
var tokenSource = new System.Threading.CancellationTokenSource(500);
try
{
await Task.Run(() =>
{
while (true)
{
//Infinite loop to test the code
}
}, tokenSource.Token);
return null;
}
catch (OperationCanceledException)
{
return new TextBlock();
}
}
我加了的CancellationToken是1500毫秒後到期(我假設,如果翻譯需要更長的時間來處理的代碼,它有被困在一個循環中)。
我第一次嘗試這種方法通常可行,但如果我再試一次,CommandBar按鈕永遠不會再次啓用,所以我認爲該任務將永久等待,並且我不知道爲什麼,因爲我添加了的CancellationToken。
你知道這裏可能是錯的嗎? 感謝您的幫助!
塞爾吉奧
請提供更好的代碼示例。一個簡潔,但實際上可以由其他人編譯和運行。如果你也可以放棄罵人的話,那會很好。見http://stackoverflow.com/help/mcve – 2014-11-07 02:05:16
哈哈,這是我正在解釋的語言的實際名稱ahahahah我忘了切出來,對不起:) 我編輯我的帖子用兩個小方法重現問題,再次感謝您的幫助! – Sergio0694 2014-11-07 02:30:33