我有自定义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
///...
}
但是此方法返回False
。 Microsoft says CloseMainWindow()
的返回值为:
如果成功发送了关闭消息,则true ; false 如果关联的进程没有主窗口或主窗口被禁用(例如,如果正在显示模式对话框)。
每次拨打WaitForExit(int)
次。对Kill()
的调用会终止该过程。
肯定没有显示的对话框。还有什么其他原因会导致主表单被禁用?如何确定此调用返回False
的原因?
答案 0 :(得分:0)
表单必须可见,但必须已调用Show()
才能收到CloseMainWindow()
消息。如果表单已隐藏form.Hide()
,则不会收到该消息。