Как правило, нет. Это связано с тем, что по умолчанию (и в соответствии с наилучшей практикой) вы настроили свою службу для запуска за один вызов (или за сеанс), что означает, что на вашем хосте службы может быть несколько экземпляров вашей фактической службы.
Таким образом, любое требование для вас, чтобы иметь возможность вернуть экземпляр услуги с хоста службы, будет содержать некоторые неприятные сантехнические коды и не рекомендуется.
В частности, однако, есть два подхода, которые вы могли бы использовать, чтобы делать то, что хотите.
Первый включает запуск службы в экземпляре InstanceContextMode.Single - это означает, что будет один экземпляр службы, который будет обрабатывать все запросы. Если вы сделаете это, то вы можете просто создать экземпляр службы, а затем передать его в ServiceHost при запуске службы Windows:
var service = new MyService();
var host = new ServiceHost(service);
Затем вы имеете доступ к экземпляру службы и может вызывать операцию непосредственно.
service.MyOperation("something");
Второй вещь, которую вы можете сделать, когда вы не хотите, чтобы запустить службу одноплодных вы можете сделать вашу реализацию сервиса просто обертка статического экземпляра общего класса, который на самом деле обрабатывать запросы. В качестве примера:
public class MyService : IMyService
{
private static IMyService instance = new MySharedServiceClass();
public static IMyService Instance
{
get { return instance ; }
}
public bool MyOperation(string something)
{
return instance.MyOperation(something);
}
}
Затем вы можете вызвать метод в классе, как это:
var host = new ServiceHost(typeof(MyService));
var instance = MyService.Instance;
instance.MyOperation("something");
я бы до сих пор не делать этого, если это вообще возможно. Подумайте сами, почему вы хотите, чтобы этот метод вызывался при запуске? Конечно, было бы лучше иметь этот код непосредственно в службе windows, если это что-то, что нужно запускать при запуске?
Вы можете сообщить об этом в ваш сервис. –
Что ты имеешь в виду? WCF или Windows Service? – petrppe
Служба WCF ServiceContract и реализация сервиса –