2013-10-30 91 views
2

我在使用.NET CF 2.0 SP2的ARM處理器設備上運行Windows CE 6.0,並在C#中編寫應用程序。在Windows CE 6.0退出時終止應用程序

我的應用程序在關閉後繼續運行時遇到問題。應用程序會打開一個連接到設備的連接,在正確關閉之前不會釋放它。因此,我無法在應用程序繼續運行時重新打開和使用應用程序,也無法運行希望使用附加設備的其他應用程序。

我試圖運行Application.Exit()並且我的所有線程都將IsBackground屬性設置爲true但這不起作用。關閉應用程序後,我可以使用任務管理器並查看該過程繼續運行。

我通常會使用Environment.Exit(),但不幸的是,這在CF中不可用。

是否有任何方法可以嘗試使用或導致發生這種情況?

謝謝。

回答

4

你可以嘗試這樣的事:

Process thisProcess = Process.GetCurrentProcess(); 
thisProcess.Kill(); 

看看會發生什麼。關閉應用程序顯然並不理想,但它可能是最後的手段,特別是如果您在之前手動處理數據的保存和丟棄。

+1

啊我沒有想到用它作爲臨時修復程序,它也可以工作。正如你所說的那樣,它不是理想的,但在同時使用它會很好,直到我找出造成問題的原因。謝謝。 – benallansmith

+1

您是否嘗試在調試器中運行您的應用程序?你可以嘗試在它處於「殭屍」狀態時打破它,以瞭解是什麼阻止它終止。 –

0

可能是這個可以幫忙。將主題背景屬性設置爲false致電之前Application.exit();

private void BtnExit_Click(object sender, EventArgs e) 
{ 
    Thread1.IsBackground = false; 
    Thread2.IsBackground = false; 

    Application.exit(); 
} 
1

對於任何人還在爲此苦苦掙扎:

我發現這個問題是與Windows CE/WEHH/.NET精簡,應用程序不會退出上按下一個窗體上的X按鈕,它們是隻有最小化(意味着關閉事件不會被調用)。

根據this頁面上的答案之一,可以通過將表單屬性'MinimizeBox'設置爲false來更改關閉按鈕以實際退出應用程序。

this.MinimizeBox = false; 

這會將X按鈕更改爲OK按鈕,並且會完全退出應用程序。

相關問題