public class MyManagedWindowsService : ServiceBase { private ServiceHost _serviceHost; protected override void OnStart(string[] args) { if (_serviceHost != null) _serviceHost.Close(); _serviceHost = new ServiceHost(new MyServiceStub()); _serviceHost.Faulted += ServiceHostFaulted; _serviceHost.Open(); ((IMyService)_serviceHost.SingletonInstance).Start(); } void ServiceHostFaulted(object sender, EventArgs e) { //When something goes really bad in wcf-service we end up here every time? Stop(); //ServiceBase.Stop() } protected override void OnStop() { if (_serviceHost != null) { try { _serviceHost.Close(); _serviceHost = null; } catch (Exception exception) { Log.Error(exception); } } } } [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.Single)] public class MyServiceStub : IMyService { private Timer _timer; private BackgroundWorker _worker; //... }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)