了解是否在WPF或控制台模式下运行(c#)

时间:2010-08-01 14:02:19

标签: c# wpf


这是一个非常简单的问题,搜索泪水不是很好。

如果我当前作为控制台应用程序而不是WPF窗口应用程序运行,如何检入某个库?

感谢您的任何提示,

克里斯

4 个答案:

答案 0 :(得分:2)

您可以通过选中Dispatcher.Current来检查当前线程是否是WPF UI线程。

答案 1 :(得分:2)

还有更多,如果从工作线程调用库方法怎么办?你没有告诉为什么你需要知道,阻止一个好的答案。一种方法是使用您的库的应用程序从不会有任何麻烦知道它的控制台或WPF。公开财产以允许它告诉你。另一个是使用事件,因此应用程序可以简单地实现事件处理程序。依赖注入是另一个。

答案 2 :(得分:2)

您可以使用以下语句检查执行的语句是否在WPF主机中运行:

if (System.Windows.Application.Current != null)
{
//statements for WPF mode
}
else
{
//statements for non WPF mode...
}  

为此,您必须引用PresentationFramework.dll

答案 3 :(得分:0)

ILDasm将在清单中有一个条目如下:

.subsystem 0x0003       // WINDOWS_CUI

.subsystem 0x0002       // WINDOWS_GUI

基于子系统类型,您可以判断其GUI或CUI。

此信息也可从以下命令获得:

dumpbin ConsoleApplication1.exe /headers

从库查询条目汇编并获取其完整路径(Assembly.GetEntryAssembly()。CodeBase),然后您可以发出任何这些命令来了解子系统。