WPF/C# - 窗口在打开时关闭

本文关键字:窗口 WPF | 更新日期: 2023-09-27 18:32:01

我尝试在我的 c# 测试应用程序中打开一个 wpf 窗口。但是当我打开窗户时,它立即又关闭了。

我的代码出了什么问题?

主.cs(也可在此处获得):

namespace Project1
{
    class TestClass
    {
        public static MainWindow _mainWindow = null;
        static void Main(string[] args)
        {
            Thread t = new Thread(new ThreadStart(ThreadProc));
            t.SetApartmentState(ApartmentState.STA);
            t.Start();
            while (true)
            {
                System.Threading.Thread.Sleep(1000);
                _mainWindow.ToString();
            }
        }
        public static void ThreadProc()
        {
            TestClass2 testClass = new TestClass2();
            testClass.Open();
        }
    }
    class TestClass2
    {
        public void Open()
        {
            TestClass._mainWindow = new MainWindow();
            TestClass._mainWindow.Show();
            Console.WriteLine("=)");
        }
    }
}

MainWindow.xaml:

http://paste.ubuntu.com/943800/

WPF/C# - 窗口在打开时关闭

你的代码正在做一些奇怪的事情,没有明显的原因:

  • 为什么要创建一个新线程,然后将您已经拥有的线程放入无限循环中?
  • 为什么要在您的Window上调用.ToString(),该还由不同的线程拥有?(我不确定这是否会导致您的程序像大多数其他操作一样由于所有权问题而崩溃,但很有可能)。

此外,您不会在任何地方创建消息循环,因此即使程序正常工作,它也完全不响应用户输入。创建Window后,无论您在哪个线程中执行此操作,都应该调用

System.Windows.Threading.Dispatcher.Run();

我相信你的Main()上缺少[STAThread]属性

您是否尝试使用ShowDialog()而不是Show()