Узнайте, работает ли в режиме WPF или консоли (c #) - PullRequest
2 голосов
/ 01 августа 2010

Ну
это действительно простой вопрос, поисковые слезы не так уж и хороши.

Как мне проверить в какой-то библиотеке, если я в данный момент работаю как консольное приложение, по сравнению с WPFокно приложения?

Спасибо за любые советы,

Крис

Ответы [ 4 ]

2 голосов
/ 23 августа 2010

Вы можете проверить, выполняются ли выполняемые операторы на хосте WPF, с помощью следующего оператора:

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

Для этого необходимо сослаться на PresentationFramework.dll

2 голосов
/ 01 августа 2010

Есть еще что, если ваш библиотечный метод вызывается из рабочего потока? Вы не сказали, зачем вам нужно знать, что мешает получить хороший ответ. Один из подходов заключается в том, что у приложения, использующего вашу библиотеку, никогда не возникает проблем с определением, является ли она консольной или WPF. Разоблачить свойство, чтобы оно могло вам рассказать. Другой использует события, так что приложение может просто реализовать обработчик событий по своему вкусу. Инъекция зависимости - это другое.

2 голосов
/ 01 августа 2010

Вы можете проверить, является ли текущий поток потоком пользовательского интерфейса WPF, установив Dispatcher.Current.

0 голосов
/ 01 августа 2010

ILDasm будет иметь следующую запись в манифесте:

.subsystem 0x0003       // WINDOWS_CUI

.subsystem 0x0002       // WINDOWS_GUI

в зависимости от типа подсистемы, вы можете сказать, является ли его GUI или CUI.

Эта информация также доступна из следующей команды:

dumpbin ConsoleApplication1.exe /headers

Из вашего библиотечного запроса на сборку записи и получите полный путь (Assembly.GetEntryAssembly (). CodeBase), а затем вы можете выполнить любую из этих команд, чтобы узнать подсистему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...