2013-12-10 4 views
-1

Мне нужно следующее: У меня есть одна форма, которая получает изображения с моих камер и показывает эти изображения в форме. Также я могу выбрать на Форме, какая камера будет отображаться в кадре изображения. Теперь я хочу, чтобы кто-то из удаленного компьютера подключился к моей программе и получил некоторый результат, основанный на текущих изображениях. Итак, я использовал WCF. Я написал интерфейс с атрибутом [ServiceContract] и методом GetResult() с атрибутом [OperationContract]. И я реализовал этот интерфейс в моем классе Form, у моей формы теперь есть метод GetResult(), который можно вызывать с удаленного компьютера. И когда я начинаю службу из основной программы, как этотФорма, использующая контракт WCF

ServiceHost selfHost = new ServiceHost(typeof(Form1), baseAddress); 

моя услуга будет доступен и удаленный пользователь сможет вызвать метод GetResult(), но Form1 с изображениями камер обыкновения быть показан. Мне нужно, чтобы это было показано, поэтому я могу выбрать, какие камеры использовать. Есть ли способ запустить GUI Form1 при запуске службы?

ответ

0

Не делайте свою форму ServiceHost. Это просто вызовет большой беспорядок (проблемы с потоками, для одного). Разделите два - укажите форму и узел WCF, и хозяин уведомит форму изменений.

+0

Да, я знаю, что это должно быть разделено, но возможно ли сделать это, что я спросил выше, чтобы начать графический интерфейс вместе с сервисом? – Aleksa

+0

@AleksaStancetic - Почему? Это идея * плохой. Веб-службы не предназначены для создания пользовательского интерфейса. Они разработаны и предназначены для передачи данных в/прием данных из пользовательского интерфейса. – Tim

+0

Возможно ли тогда иметь объект DataService, который получает параметр Form as в конструкторе, а затем вызывает методы из этой формы? – Aleksa

Смежные вопросы