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

时间:2012-04-24 09:23:01

标签: c# wpf window

我尝试在c#test应用程序中打开一个wpf窗口。 但是当我打开窗户时,它会立即再次关闭。

我的代码出了什么问题?

Main.cs(也可用here):

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/

3 个答案:

答案 0 :(得分:7)

你的代码做了一些奇怪的事情,没有明显的理由:

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

此外,您不会在任何地方创建消息循环,因此即使程序运行,它也会完全没有响应用户输入。创建System.Windows.Threading.Dispatcher.Run(); 之后,无论你做什么线程,都应该调用

{{1}}

答案 1 :(得分:2)

我相信您错过了Main()

上的[STAThread]属性

答案 2 :(得分:0)

您是否尝试使用ShowDialog()代替Show()