系統關閉後出現以下錯誤: > "InvalidOperationException: 呼叫執行緒無法存取此物件,因為此物件屬於另一個執行緒。" > "System.Reflection.TargetInvocationException' 的未處理例外狀況發生於 WindowsBase.dll 引動過程的目標傳回例外狀況。" ## <font color="red">元兇竟然是因為"TabControl"這元件!!!</font> ### 解決辦法: 1.在Window_Loaded不使用Dispatcher.ShutdownStarted這方法,直接Window_Unloaded來關閉就好 ``` private void Window_Loaded(object sender, RoutedEventArgs e) { OpenUHFReader(); //Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted; } private void Window_Unloaded(object sender, RoutedEventArgs e) { //Environment.Exit(0); System.Windows.Application.Current.Shutdown(); } ``` 2.若要使用Dispatcher_ShutdownStarted的話,就不要再加上<font color="blue">「Environment.Exit(0);」</font> ``` private void Dispatcher_ShutdownStarted(object sender, EventArgs e) { try { // Device CloseUHFReader(); } catch (Exception ex) { } //Environment.Exit(0); 不要有這一行 } ``` ### 原因: <font color="blue">因為Dispatcher_ShutdownStarted已經就在做關閉的動作了,若再進行一些操作(例如關閉設備、釋放資源等),可能會導致對已釋放或正在釋放的 UI 元件進行存取,這會引發 InvalidOperationException。</font>
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up