Запуск службы Windows, вызывающий ошибку Windows - PullRequest
0 голосов
/ 20 июля 2010

Мы написали пользовательскую службу Windows (VB.NET, .NET Framework 2.0), для запуска которой требуется некоторое время, поскольку она загружает продажи.

Protected Overrides Sub OnStart(ByVal args() As String)
  -- upload sales here
End Sub

Тот факт, что для запуска требуется много времени, это хорошо, но это вызывает ошибку времени ожидания в Windows, и запуск другой программы не добавляется в системный трей.

Мы можем отложить загрузку продаж, но Windows предпочла бы игнорировать тот факт, что запуск этой службы занимает много времени, а не выдавать ошибку. Есть идеи?

Ответы [ 3 ]

5 голосов
/ 20 июля 2010

Запустите загрузку кода продажи в другом потоке, который запустит код загрузки в фоновом режиме и позволит службе ответить, что она запущена, и вы не получите сообщение о тайм-ауте

например

Protected Overrides Sub OnStart(ByVal args() As String)

    Dim start as new ThreadStart(UploadSalesMethod)
    Dim t as new Thread(start)
    t.Start()

End Sub
4 голосов
/ 20 июля 2010

Код в методе OnStart не может выполняться слишком долго. Так что, если у вас есть долго работающий код, он перемещается в другой поток, поэтому событие OnStart будет возвращаться раньше.

1 голос
/ 20 июля 2010

Для непосредственного решения вашей проблемы "скорее бы Windows игнорировала тот факт, что запуск этой службы занимает много времени, а не выдает ошибку", вы можете просто увеличить значение времени ожидания при запуске, вызвав RequestAdditionalTime на ServiceBase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...