2014-10-28 12 views
6

Mam tę właściwość w moim viewmodel."System.Threading.Tasks.TaskCanceledException" wystąpił w WindowsBase.dll podczas zamykania aplikacji

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

Czasami (~ 1 na 10 razy), kiedy zamknąć mojej aplikacji pojawia się następujący błąd w NotifyOfPropertyChange:

Wyjątek typu „System.Threading.Tasks.TaskCanceledException” wystąpił w WindowsBase. dll, ale nie było obsługiwane w kodzie użytkownika

Informacje dodatkowe: Zadanie zostało anulowane.

Mam system.Threading.Timer w moim modelu widoku, który wykonuje wywołanie usługi sieci Web do aktualizacji tej i wielu innych właściwości.

Używam Caliburn.Micro i wygląda na to, że zaczęło się dziać, gdy zaktualizowałem wersję 1.5 do 2.0.

Czy mimo to można zapobiec wystąpieniu tego błędu?

+0

Czy możesz podać kod wywołania usługi sieciowej? Czy używasz do tego TPL? – ZoolWay

Odpowiedz

3

Jest możliwe, że aplikacja nie będzie regularnie usuwać żadnych wątków pomocniczych, które są używane przed zamknięciem aplikacji, co często powoduje komunikat o błędzie, taki jak ten, który opublikowałeś. Mógłbym Proponuję próbuje następujące:

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

ta powinna zmusić aplikację, aby zamknąć wszystkie aktywne wątki przed zamknięciem. Pamiętam, że miałem podobny problem i ta drobna poprawka go rozwiązała. Może warto spróbować, daj mi znać, jeśli to nie pomoże i zobaczymy, jakie mogą być inne rozwiązania. Mam nadzieję że to pomoże.

+1

To działa dla mnie! –

+1

Dziękuję panu, to było bardzo pomocne. – Lostaunaum

Powiązane problemy