У меня есть служба WCF, размещенная в консольном приложении. Служба пытается подключиться к открытому окну через протокол DDE. Не повезло. В чем проблема? Консольное приложение работает в моей учетной записи, как приложение dde windows.Создание DDE-соединения из службы WCF, размещенной в консольном приложении
ответ
Я не являюсь экспертом в этой области, но я считаю, что DDE требует, чтобы у вас был загрузочный насос (которого не хватает консольное приложение), поэтому вам может быть лучше, если вы разместите свою службу WCF в приложении WinForms.
Если я запускаю прослушиватель в консоли без WCF, все в порядке – INs
Вы предоставили столько информации о проблеме, что почти невозможно дать вам окончательный ответ. Тем не менее, ваш комментарий к ответу Аллона интересен.
Если я запустить слушателя в консоли без WCF, все прекрасно
Так что ваше приложение DDE слушает что-то? Теперь я должен предположить, что вы попытались создать клиент DDE, который подписывается на консультативный цикл через DdeClient.StartAdvise
. Этот метод поиска данных сильно зависит от механизма пересылки сообщений.
При создании экземпляра DdeClient
он по умолчанию создаст свой собственный насос сообщений в отдельном потоке для получения этих уведомлений. Это объясняет, почему это работает, когда вы оставляете свой код в основном консольном приложении.
Однако при смешивании WCF могут возникнуть некоторые сложности, связанные с потоками, которые, возможно, придется обрабатывать вручную. Единственный способ, который я собираюсь рассказать, - это предоставить дополнительную информацию.
Как вы пытаетесь установить диалог DDE? Вы используете DDEML? –
Я использую NDde. – INs
Хорошо, можете ли вы опубликовать сообщение об исключении или описать, что заставляет вас думать, что оно не работает? –