Как я могу поймать исключение, которое возникает при запуске службы Windows. Я не могу получить исключение здесь в моем нижнем коде, хотя я бросаю исключение в метод Onstart() службы.Невозможно уловить исключения ServiceController.Start() в вызывающем потоке
public class InterOpIntegrationWinService : ServiceBase
{
protected override void OnStart(string[] args)
{
throw new InvalidOperationException(message);
}
}
телефонный код нить
try
{
using (ServiceController controller = new ServiceController())
{
controller.ServiceName = objServiceConfig.ServiceName;
controller.Start();
System.Windows.Forms.Application.DoEvents();
//controller.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 15));
//controller.WaitForStatus(ServiceControllerStatus.Running);
//if (!string.IsNullOrEmpty(LogUtilities.ServiceOnStartException))
//{
// MessageBox.Show("Error with starting service : " + LogUtilities.ServiceOnStartException);
// LogUtilities.ServiceOnStartException = string.Empty;
//}
}
}
catch (System.InvalidOperationException InvOpExcep)
{
DisplayError(InvOpExcep.Message);
LogUtilities.DisplayMessage("Failed to start service. " + LogUtilities.ServiceOnStartException, InvOpExcep);
LogUtilities.ServiceOnStartException = string.Empty;
}
catch (Exception ex)
{
DisplayError(ex.Message);
LogUtilities.DisplayMessage("Failed to start service. " + LogUtilities.ServiceOnStartException, ex);
LogUtilities.ServiceOnStartException = string.Empty;
}
я проверить лицензию приложения в методе OnStart() и генерирует ошибку лицензирования, если это не удается. я хочу, чтобы это было доступно для моего вызывающего потока, чтобы я мог показать это сообщение в DialogBox. Любые идеи о том, как это сделать, если я не могу справиться с исключениями в моем вызывающем процессе.
Откуда вы знаете, что не поймаете его? – dotctor
После того, как controller.start(), он не входит в блок исключений, ни в исключении invalidOperationException, ни в блоке исключений – battech
Исключения только «существуют» в рамках одного процесса - нет концепции улавливания исключений, которые происходят внутри других процессов - и запуск службы запускает новый процесс. –