2010-04-30 41 views
1

我現在正在使用C#開發使用.Net Compact Framework 3.5的Windows Mobile 6.5上的應用程序。程序中有一個函數用於定期從服務器端更新位置信息,但如果我繼續運行此計算,則會花費太多精力。出於這個原因,我想在後臺運行它,並嘗試使用BackgroundWorker來做到這一點,它運行良好。關閉程序後如何保持程序運行?

我現在的問題是,我不能最小化程序,以便我必須保持程序的主要形式在前臺運行,即使它沒有做任何事情,這對用戶來說是非常不方便的。但是,當我關閉該程序時,BackgroundWorker也將被關閉。

當我關閉程序時,是否有任何方法可以保持更新進程正在運行(某處在內存中)?然後當我重新啓動程序時可以恢復信息?

+0

看看這個:http://managedserviceswm.codeplex.com/ – 2010-04-30 13:16:00

回答

0

如果您的表單關閉,那麼Application.Run(可能在Program.Main中調用)會返回並且進程的主線程退出,導致應用程序終止。

然後,解決方案是不關閉窗體,只需隱藏它。默認情況下,表單的「MinimizeBox」屬性應該是true,並且它的右上角應該有一個[X]。點擊這個最小化表單,不會退出你的應用程序。

在某些情況下的其他選項是根本沒有表格。這裏面臨的挑戰是CF沒有任何在表單中不接受的任何Application.Run重載(就像桌面框架一樣)。如果您想要走這條路線,Smart Device Framework會提供一個。

+0

感謝您的回覆。我遇到的問題是,當我最小化窗體(使用右上角的[X])時,手機會崩潰並需要重新啓動手機。我不確定你提到的其他選擇是什麼,你能否解釋一下更詳細的內容? 非常感謝! – user329762 2010-04-30 23:45:40

+1

如果最小化您的應用會導致崩潰,那麼您需要調試並解決該問題,而不是嘗試找到其他解決方法。 – ctacke 2010-05-01 02:26:32

0

我沒有使用.NETCF 3.5。然而,在.NETCF 1.0/2.0之前的版本中,我觀察到即使使用(X)按鈕關閉應用程序,它也會轉到後臺,但仍保留在內存中。

如果是這樣的情況與.NETCF 3.5以及那麼我認爲你不需要在這裏任何東西。即使關閉應用程序,後臺工作也會運行。

我希望這會幫助你。

1

如何創建服務而不是後臺工作?