2014-10-28 36 views
6

我在我的viewmodel中有這個屬性。'System.Threading.Tasks.TaskCanceledException'發生在WindowsBase.dll關閉應用程序時

public bool IsKWH 
{ 
    get { return _isKwh; } 
    set 
    { 
     if (value.Equals(_isKwh)) return; 
     _isKwh = value; 
     NotifyOfPropertyChange(() => IsKWH); 
    } 
} 

有時(1〜10倍),當我關閉我的應用程序獲得NotifyOfPropertyChange以下錯誤:

型「System.Threading.Tasks.TaskCanceledException」的異常出現在WindowsBase。 dll但未在用戶代碼中處理

其他信息:任務已取消。

我有一個System.Threading.Timer在我的視圖模型,正在做web服務調用來更新這個和許多其他屬性。

我正在使用Caliburn.Micro,它似乎在我從1.5更新到2.0時開始發生。

有無論如何防止這種錯誤發生?

+0

你能提供web服務調用的代碼嗎?你使用TPL嗎? – ZoolWay 2016-03-21 08:21:09

回答

3

在應用程序關閉之前,您的應用程序可能會間歇性地處理它正在使用的任何輔助線程,並且這通常會導致錯誤消息,例如您發佈的錯誤消息。我可以建議嘗試以下操作:

protected override void OnClosing(System.ComponentModel.CancelEventArgs e) 
{ 
     // close all active threads 
     Environment.Exit(0);  
} 

這應該強制應用程序在關閉之前關閉所有活動線程。我記得有一個類似的問題,並且特別小的修復解決了它。可能值得試試,讓我知道它是否沒有幫助,我們可以看到可能有哪些其他解決方案。希望這可以幫助。

+1

這適用於我! – 2016-10-19 14:54:59

+1

謝謝你,先生,這是非常有益的。 – Lostaunaum 2017-07-27 18:55:33

相關問題