我有一個用WPF和WF編寫的Windows應用程序,它也通過Quickbooks API與外部Web服務和Quickbooks的本地副本交互。EXE在退出後仍保留在任務管理器中
一切都很好,但唯一的問題是,即使我們退出Windows應用程序和Quickbooks後,我們仍然看到Windows應用程序可執行文件坐在任務管理器中。
任何人有任何想法我們如何解決這個問題?
感謝, badallen
我有一個用WPF和WF編寫的Windows應用程序,它也通過Quickbooks API與外部Web服務和Quickbooks的本地副本交互。EXE在退出後仍保留在任務管理器中
一切都很好,但唯一的問題是,即使我們退出Windows應用程序和Quickbooks後,我們仍然看到Windows應用程序可執行文件坐在任務管理器中。
任何人有任何想法我們如何解決這個問題?
感謝, badallen
難道這是一個與Application.ShutDownMode有關的問題嗎?該物業可能設置爲ShutDownMode.OnExplicitShutDown,並且可能沒有致電Application.ShutDown()。
謝謝,這似乎有伎倆。 – badallen 2009-08-19 16:59:08
只是一個猜測,但我想看看你的WF或QuickBooks的API掛在他們的Dispose()
電話。有時網絡API太急於清理,而不是僅僅關閉和避開。
處理此問題的一種方法是通過bg線程(帶超時)。類似以下內容
Action close = api.Dispose;
var ar = close.BeginInvoke(cb => close.EndInvoke(cb), null);
ar.AsyncWaitHandle.WaitOne(500);
只是爲了仔細檢查,您確定這是獨立的可執行文件仍在運行,而不是* appname * .vshost.exe? – 2009-08-18 17:47:35
我會嘗試調試應用程序。在「關閉」(關閉主窗口)之後,打破調試器以查看現在不可見的應用程序在做什麼。您可能想要使用Microsoft符號服務器來獲取詳細的堆棧跟蹤。單從你的描述來看,很難猜測問題是什麼。 – 2009-08-18 17:47:39
我建議尋找在主應用程序關閉時不會停止的非後臺線程。 – 2009-08-18 17:51:09