多个应用程序调用的奇怪行为.在Windows 10环境下运行
本文关键字:Windows 环境 运行 应用程序 调用 | 更新日期: 2023-09-27 18:14:29
我有两个窗体的应用程序(刚刚创建的AddNewForm)
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
Application.Run(new Form2());
}
当Form1被右上角的红叉关闭时,Form2如预期的那样显示。
当Form1被任务栏表单图标上显示的上下文菜单"关闭"关闭时,应用程序几乎立即终止。如果Form2没有显示,则会发生以下情况-它的Load事件处理程序被处理,但它的FormClosed事件处理程序没有被调用。
我只在Windows 10上观察到这种行为(无法在Windows 7上模拟),并且在大约。80%的病例。有什么原因吗?
如果我替换Application。通过new FormXX()运行(new FormXX())。showdialog ()应用程序开始按预期运行。所以在Application中会有一些问题。在一个线程中运行与此方法的多次调用相关的。
我目前的解决方案是基于每个线程只运行一次Application.Run()。下面的代码不会立即关闭Form2:
Thread thread1 = new Thread(() =>
{
Application.Run(new Form1());
});
thread1.SetApartmentState(ApartmentState.STA);
thread1.Start();
thread1.Join();
Thread thread2 = new Thread(() =>
{
Application.Run(new Form2());
});
thread2.SetApartmentState(ApartmentState.STA);
thread2.Start();
thread2.Join();