使用紧凑框架从Main()再次运行main表单

时间:2013-12-18 13:00:51

标签: c# compact-framework

我正在为使用Compact Framework of C#的设备开发应用程序。我需要重新启动我的应用程序或再次从Main方法运行带有主窗体的Application.run,以便可以更新它。我不能使用Application.Restart()或只是Application.Run(),因为它们都不能在紧凑的框架中使用。 我试过用:

[DllImport("coredll.dll")]
    private static extern bool CeRunAppAtTime(string pwszAppName, DateTime lpTime);
    var time = DateTime.Now.AddSeconds(15);
    CeRunAppAtTime(fullAppName, time);

但这不起作用。还尝试过:

rocessStartInfo Info = new ProcessStartInfo();
Info.Arguments = "/C ping 127.0.0.1 -n 2 && \"" + fullAppName + "\"";
Info.FileName = "cmd.exe";
Process.Start(Info);
Application.Exit(); 

但这不起作用并且给了Win32Error。

有没有人有任何其他想法尝试或我在提到的解决方案上做错了什么?有没有办法在Myform.Close()运行后再次执行Application.Run(MyForm)?

我使用的设备在Windows Embedded Handheld 6.5 Professional CE OS 5.2.29094上运行

1 个答案:

答案 0 :(得分:0)

CeRunAppAtTime采用SYSTEMTIME结构,而不是托管的DateTime,因此您的第一次调用肯定会失败。

第二个看起来你期待CE控制台非常强大。这是一款香草CE设备吗?如果是这样,电话可能无法正常工作,但为什么不打电话来启动您的应用?如果它是Windows Mobile,操作系统会阻止第二个实例运行,那么cmd.exe甚至不存在(ping也不存在),因此这将是一个失败点。

你的第一条路是我走的路。只需修复它,以便P / Invoke接受一个long并传递SystemTime值而不是托管DateTime