我可以在控制台应用程序或 Class 库中模拟或以某种方式创建 WPF UI 线程吗?
Can I simulate or somehow create a WPF UI thread within a Console Application or Class Library?
我必须使用外部 API,无论出于何种原因,只要它被初始化就可以工作,并且 运行 在 WPF 应用程序的 UI 线程上。如果我启动一个 task/thread,即使在 WPF 测试应用程序中也不使用 UI 同步上下文,API 将不起作用。
我需要让它在控制台应用程序、Windows 服务、class 库中工作...但不是 WPF 应用程序。
这在控制台应用程序中对我有用
我不确定您的案例是否需要 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
参考。
我必须使用外部 API,无论出于何种原因,只要它被初始化就可以工作,并且 运行 在 WPF 应用程序的 UI 线程上。如果我启动一个 task/thread,即使在 WPF 测试应用程序中也不使用 UI 同步上下文,API 将不起作用。
我需要让它在控制台应用程序、Windows 服务、class 库中工作...但不是 WPF 应用程序。
这在控制台应用程序中对我有用
我不确定您的案例是否需要 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
参考。