多个应用程序调用的奇怪行为.在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%的病例。有什么原因吗?

多个应用程序调用的奇怪行为.在Windows 10环境下运行

如果我替换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();