Wpf Dispatcher何时创建?

问题描述 投票:1回答:1

我运行的Wpf应用程序与常规方法有些不同。

我有一个包含Wpf窗口的类库项目,并且运行得很好。

有时由于我尚不知道的原因,在实例化该窗口后,当我移至下一个结构时,该窗口的调度程序为null。]

我试图弄清楚应该在WPF应用程序生命周期的哪一点创建分派器?

谢谢

namespace WpfLib1
{
    public class ViewModel
    {
        private Window1 _window1;

        public void Launch()
        {
            using (EventWaitHandle eventWaiter = new EventWaitHandle(false, EventResetMode.AutoReset,"someName"))
            {
                Thread splashThread = new Thread(new ThreadStart(ShowCustom)) { IsBackground = true };
                splashThread.SetApartmentState(ApartmentState.STA);
                splashThread.Start();

                eventWaiter.WaitOne();
            }
        }

        private void ShowCustom()
        {
            _window1 = new Window1();

            EventWaitHandle eventWaiter = EventWaitHandle.OpenExisting("someName");
            eventWaiter.Set();

            _window1.Closed += (sender, args) =>
            {
                _window1.Dispatcher.BeginInvokeShutdown(DispatcherPriority.Background);
            };

            _window1.Show();
            Dispatcher.Run();
        }

    }
}

我正在运行Wpf应用程序,与常规方法有些不同。我有一个包含Wpf窗口的类库项目,并且运行得很好。有时,窗口中的调度程序为null ...

wpf dispatcher
1个回答
0
投票

您应该创建一个使用Dispatcher的同步上下文:

© www.soinside.com 2019 - 2024. All rights reserved.