2010-04-30 83 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

如何创建服务而不是后台工作?

相关问题