【问题标题】:Windows Mobile 6.5 Process.StartWindows Mobile 6.5 Process.Start
【发布时间】:2012-07-29 18:41:42
【问题描述】:

我有一个 GUI 应用程序,它在 Windows Mobile 6.5 上启动两个命令行应用程序(没有窗口,只有进程)。我正在使用以下代码开始进程:

Process service = new Process();
var pi = new ProcessStartInfo(exePath, null);
    pi.UseShellExecute = false;        
    service.StartInfo = pi;
    //start the process
    service.Start();

一切正常,除了调用 service.Start() 时,我的 GUI 应用程序被一个在屏幕中心旋转的圆圈覆盖。等待程序启动时旋转的相同图标表示操作系统正忙。现在,由于这些进程将在 GUI 的整个生命周期内运行,即使在 GUI 退出之后,这个循环也不会消失。有没有办法通过代码让它消失?我尝试使 gui 无效以重新绘制并将光标更改为正常。不工作吗?

有什么想法吗?

【问题讨论】:

    标签: c# compact-framework


    【解决方案1】:

    exePath 发布了什么?

    我的猜测是Simon McKenzie 已经把这个钉在了头上。这可能正是正在发生的事情。

    然而,每当操作系统启动一些密集的 CPU 进程时,它也会抛出一个WaitCursor在屏幕中心旋转的圆圈)。如果是这种情况,您可能需要重新考虑如何处理您正在启动的此流程 - 特别是如果您是该流程的编写者。

    考虑下面的假设应用程序来轮询网络并编译到您的exePath

    while (true) {
      if (networkDataAvailable()) {
        processData();
      }
    }
    

    那个假设的应用程序会占用处理器的空闲时间。

    如果您正在启动的进程执行类似的操作,您将需要找到另一种方法来解决该问题,例如在计时器滴答事件中调用更简单的进程。

    exePath 标识的修改后的进程现在将是:

    if (networkDataAvailable()) {
      processData();
    }
    

    在您的 Windows 应用程序中,您可以根据需要调用它,如下所示:

    private void timer1_Tick(object sender, EventArgs e) {
      Process service = new Process();
      var pi = new ProcessStartInfo(exePath, null);
      pi.UseShellExecute = false;        
      service.StartInfo = pi;
      //start the process
      service.Start();
    }
    

    【讨论】:

      【解决方案2】:

      如果不进一步了解您在 exePath 中启动的进程正在做什么,这很难诊断。如果该进程抛出等待光标并独占 CPU,它可能会解释您所看到的行为。

      【讨论】:

        【解决方案3】:

        听起来对service.Start() 的调用可能阻塞了主线程。也许您可以尝试在新线程中启动您的进程:

         private void StartProcess()
        {
            Process service = new Process();
            var pi = new ProcessStartInfo(exePath, null);
            pi.UseShellExecute = false;        
            service.StartInfo = pi;
            //start the process
            service.Start();
        }
        
        ...
        
        Thread t = new Thread(StartProcess);
        t.Start();
        

        【讨论】:

          猜你喜欢
          • 2012-05-20
          • 1970-01-01
          • 2014-11-21
          • 2017-01-28
          • 2017-12-18
          • 2012-06-25
          • 1970-01-01
          • 2011-08-27
          • 1970-01-01
          相关资源
          最近更新 更多