ApplicationContext.MainForm无法响应Process.CloseMainWindow()

时间:2016-02-19 02:58:37

标签: c# .net winforms process

我有自定义ApplicationContext

static void Main()
{
    /// ...
    MyApplicationContext applicationContext = new MyApplicationContext();
    Application.Run(applicationContext);
}

MyApplicationContext的构造函数中,设置了主窗体:

private AppForm appForm = null;

public MyApplicationContext() : base()
{
    /// init...

    appForm = new AppForm();
    this.MainForm = appForm;

    /// more init...
}

在另一个应用程序中,我按进程ID引用上述进程并发送CloseMainWindow()命令。

using (Process parentProcess = Process.GetProcessById(processID))
{
    bool result = parentProcess.CloseMainWindow(); /// false
    ///...
}

但是此方法返回FalseMicrosoft says CloseMainWindow()的返回值为:

  如果成功发送了关闭消息,则

true ; false 如果关联的进程没有主窗口或主窗口被禁用(例如,如果正在显示模式对话框)。

每次拨打WaitForExit(int)次。对Kill()的调用会终止该过程。

肯定没有显示的对话框。还有什么其他原因会导致主表单被禁用?如何确定此调用返回False的原因?

1 个答案:

答案 0 :(得分:0)

表单必须可见,但必须已调用Show()才能收到CloseMainWindow()消息。如果表单已隐藏form.Hide(),则不会收到该消息。