从控制台应用程序c#获取对不同线程中对象的访问权限

本文关键字:对象 访问 权限 访问权 线程 应用程序 控制台 获取 | 更新日期: 2023-09-27 18:27:57

我有一个控制台应用程序,我想在那里显示wpf窗口:

ths = new ThreadStart(() =>
  {
     window = new wpf_lib.Container();
     System.Windows.Application app = new Application();
     app.Run(window);
  });
 th = new Thread(ths);
 th.TrySetApartmentState(ApartmentState.STA);
 th.Start();

但是,我如何从控制台应用程序中的任何方法访问wpf窗口方法和属性?

从控制台应用程序c#获取对不同线程中对象的访问权限

您有两个选项,第一个是最简单的:

使用System.Windows.Application.MainWindow方法可以访问Window的属性和方法。

第二:向返回所需Window对象的Container类添加一个属性/方法。这可能是可能的,也可能不是,主要取决于您是否可以访问该类的源代码。

如果遇到有关线程访问的异常,请使用相应WPF对象的Dispatcher。有关详细信息,请参阅此问题。