如何在 Application.Run() 之后调用消息循环
How to invoke into message loop after Application.Run()
如何在没有对话框的情况下调用 Application.Run()
后调用 tread/form 的消息循环?原因是我想准备(稍后显示)一个即使在主应用程序中显示模态对话框也可以单击的对话框。
static Form1 dialog;
private static void CreateDialog(object obj)
{
dialog = new Form1();
Application.Run();
}
static void Main(string[] args)
{
var thread = new Thread(CreateDialog);
thread.Start();
Thread.Sleep(2000); //only for demonstration
dialog.Invoke((Action)dialog.Show); //InvalidOperationException: need window handle first
}
我在这里找到了解决方案:
我只需要访问表单的 Handle
属性 就可以从现在开始调用它。
private static void CreateDialog(object obj)
{
dialog = new Form1();
_ = dialog.Handle;
Application.Run();
}
现在不再抛出:
dialog.Invoke((Action)dialog.Show);
如何在没有对话框的情况下调用 Application.Run()
后调用 tread/form 的消息循环?原因是我想准备(稍后显示)一个即使在主应用程序中显示模态对话框也可以单击的对话框。
static Form1 dialog;
private static void CreateDialog(object obj)
{
dialog = new Form1();
Application.Run();
}
static void Main(string[] args)
{
var thread = new Thread(CreateDialog);
thread.Start();
Thread.Sleep(2000); //only for demonstration
dialog.Invoke((Action)dialog.Show); //InvalidOperationException: need window handle first
}
我在这里找到了解决方案:
我只需要访问表单的 Handle
属性 就可以从现在开始调用它。
private static void CreateDialog(object obj)
{
dialog = new Form1();
_ = dialog.Handle;
Application.Run();
}
现在不再抛出:
dialog.Invoke((Action)dialog.Show);