我可以在控制台应用程序或类库中模拟或以某种方式创建WPF UI线程吗

本文关键字:创建 方式 WPF 线程 UI 控制台 应用程序 类库 模拟 我可以 | 更新日期: 2023-09-27 18:26:17

我必须使用一个外部API,无论出于什么原因,只要它在WPF应用程序的UI线程上初始化并运行,它就可以工作。如果我旋转一个任务/线程,即使在WPF测试应用程序中也不使用UI同步上下文,那么API也不起作用。

我需要让它在控制台应用程序、Windows服务、类库中工作。。。但不是WPF应用程序。

我可以在控制台应用程序或类库中模拟或以某种方式创建WPF UI线程吗

这在控制台应用程序中对我有效

我不确定您的案例是否需要Dispatcher,或者代码只是需要STA公寓状态。

class Program
{
    static void Main(string[] args)
    {
        var thread = new Thread(() =>
        {
            Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() =>
            {
                Console.WriteLine("Hello world from Dispatcher");
            }));
            Dispatcher.Run();
        });
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();
        thread.Join();
    }
}

您只需要为Dispatcher添加WindowsBase.dll引用即可。