У меня есть самоидентифицированные именованные каналы (не используемые http) wcf, размещенные в библиотеке классов. Я могу начать WCF, используя следующий метод в классе библиотеки:Запуск WCF из своего собственного конструктора классов
ServiceHost serviceHost;
public void startService()
{
// Create the service host
...
// Open Service Host
serviceHost.Open();
}
, а затем из тестовой программы WinForms работает следующим из кнопок мыши:
MyClassLib.MySvc testSvc;
private void button2_Click(object sender, EventArgs e)
{
testSvc = new MyClassLib.MySvc();
testSvc.startService();
}
Это правильно начать WCF, запущенный в библиотеке классов.
Для этого требуется, чтобы winforms ссылались на библиотеку классов, чтобы вызвать метод startService.
Что я хочу, так это просто, чтобы запустить сервис, как только будет сделана ссылка на библиотеку классов, которая будет работать с WCF.
Я попытался добавить следующее в конструкторе библиотечного обслуживания класса:
public MySvc()
{
startService();
}
И затем экземпляр из WinForms:
MyClassLib.MySvc testSvc;
private void button2_Click(object sender, EventArgs e)
{
testSvc = new MyClassLib.MySvc();
//testSvc.startService(); //No need to call this
}
Если я отлаживать код, я могу видеть, что в факт, что он действительно нарушает на этом этапе:
public MySvc()
{
startService(); // It does run this but service does not start
}
Но это не запускает сервис. Любая помощь будет оценена по достоинству.
примечание № 1: Я считаю, что его некоторые проблемы с синхронизацией, когда он не позволяет запускать службу во время метода конструктора, но не уверен в этом.
У вас есть конструктор 'MySvc', но то, что в вашем коде звонит этот конструктор? (Подсказка: возможно, ничего). Вам нужна точка входа. Взгляните на свое приложение Winforms. Существует файл Program.cs со статическим методом 'Main'. Это точка входа. – helrich
Конструктор - это имя класса службы в библиотеке классов. И он вызывается, когда я создаю экземпляр библиотеки классов из winforms. Он даже вызывает метод startService, но служба не запускается именно так. –