c# - Application.Run() 之后如何调用消息循环
问题描述
Application.Run()
在没有对话框的情况下调用后,如何调用胎面/表单的消息循环?原因是我想准备(并稍后显示)一个可单击的对话框,即使在主应用程序中显示了模态对话框。
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
}
解决方案
我在这里找到了解决方案:https ://stackoverflow.com/a/4411493/1520078
我只需要访问Handle
表单的属性就可以从现在开始调用它。
private static void CreateDialog(object obj)
{
dialog = new Form1();
_ = dialog.Handle;
Application.Run();
}
现在这不再抛出:
dialog.Invoke((Action)dialog.Show);
推荐阅读
- .net-5 - 在 Windows server 2012 R2 上构建 .net 5
- r - 在 ggpubr 中包装部分粗体和斜体的主标题 - ggerrorplot
- python - pip install,安装其他python版本的包
- c# - ASP.NET Core 中的响应缓存在客户端还是服务器端工作?
- c++ - 如何使用 UML 类图实现从父类派生的类对象类型
- api - 为什么我无法在使用 Platform of Trust 提供的 Insomnia 工作区创建的 MyWorld Standard 数字身份中进行可视化?
- amazon-web-services - AWS S3 错误“策略具有无效资源”
- react-native - 使用现有的 React Native 项目实现 Sentry
- angular - 用 RouterLink 替换字符串
- mysql - 我声明变量的方式有什么问题,因为我不断收到语法 1064?