PerformanceCounter in Service
От: Дмитрий Глебенок Германия  
Дата: 18.12.08 16:12
Оценка:
Всем привет!

Есть следующая проблема:

После добавление объекта PerformanceCounter в функцию Main в созданный .NET windows service, сервис стартует только один раз.

Во время второго запуска выдается ошибка:
Error 1053: The service did not respond to the start or control request in a timely fashion.

После этого сообщения, сервис может быть запущен опять только один раз. Ошибка просходит в .NET 2.0, 3.0, 3.5

Вот код Main:

static void Main()
{
    PerformanceCounter counter = new PerformanceCounter("Process","Creating Process ID",Process.GetCurrentProcess().ProcessName);

    ServiceBase.Run(new WindowsService());
}


Есть ли какие нибудь идеи, почему так происходит.

Заранее благодарен,
Дмитрий Глебенок.
Re: PerformanceCounter in Service
От: dushchak Украина  
Дата: 18.12.08 21:25
Оценка:
Здравствуйте, Дмитрий Глебенок, Вы писали:

ДГ>После добавление объекта PerformanceCounter в функцию Main в созданный .NET windows service, сервис стартует только один раз.


ДГ>Во время второго запуска выдается ошибка:

ДГ>Error 1053: The service did not respond to the start or control request in a timely fashion.

ДГ>
ДГ>static void Main()
ДГ>{
ДГ>    PerformanceCounter counter = new PerformanceCounter("Process","Creating Process ID",Process.GetCurrentProcess().ProcessName);

ДГ>    ServiceBase.Run(new WindowsService());
ДГ>}

ДГ>


ДГ>Есть ли какие нибудь идеи, почему так происходит.


Преположение — после работы вызывай counter.Dispose() или пиши
using (PerformanceCounter counter = new PerformanceCounter("Process", "Creating Process ID", Process.GetCurrentProcess().ProcessName))
{
}
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[2]: PerformanceCounter in Service
От: Аноним  
Дата: 13.01.09 14:27
Оценка:
Здравствуйте, dushchak, Вы писали:

Спасибо за ответ, но так тоже не работает!



D>Здравствуйте, Дмитрий Глебенок, Вы писали:


ДГ>>После добавление объекта PerformanceCounter в функцию Main в созданный .NET windows service, сервис стартует только один раз.


ДГ>>Во время второго запуска выдается ошибка:

ДГ>>Error 1053: The service did not respond to the start or control request in a timely fashion.

ДГ>>
ДГ>>static void Main()
ДГ>>{
ДГ>>    PerformanceCounter counter = new PerformanceCounter("Process","Creating Process ID",Process.GetCurrentProcess().ProcessName);

ДГ>>    ServiceBase.Run(new WindowsService());
ДГ>>}

ДГ>>


ДГ>>Есть ли какие нибудь идеи, почему так происходит.


D>Преположение — после работы вызывай counter.Dispose() или пиши

D>
D>using (PerformanceCounter counter = new PerformanceCounter("Process", "Creating Process ID", Process.GetCurrentProcess().ProcessName))
D>{
D>}
D>
Re[3]: PerformanceCounter in Service
От: Аноним  
Дата: 13.01.09 15:40
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, dushchak, Вы писали:


А>Спасибо за ответ, но так тоже не работает!




D>>Здравствуйте, Дмитрий Глебенок, Вы писали:


ДГ>>>После добавление объекта PerformanceCounter в функцию Main в созданный .NET windows service, сервис стартует только один раз.


ДГ>>>Во время второго запуска выдается ошибка:

ДГ>>>Error 1053: The service did not respond to the start or control request in a timely fashion.

ДГ>>>
ДГ>>>static void Main()
ДГ>>>{
ДГ>>>    PerformanceCounter counter = new PerformanceCounter("Process","Creating Process ID",Process.GetCurrentProcess().ProcessName);

ДГ>>>    ServiceBase.Run(new WindowsService());
ДГ>>>}

ДГ>>>


ДГ>>>Есть ли какие нибудь идеи, почему так происходит.


D>>Преположение — после работы вызывай counter.Dispose() или пиши

D>>
D>>using (PerformanceCounter counter = new PerformanceCounter("Process", "Creating Process ID", Process.GetCurrentProcess().ProcessName))
D>>{
D>>}
D>>


Перенесите этот код в отдельный поток. А потоку входящему Main дайте выйти из него.
Re: PerformanceCounter in Service
От: mrozov  
Дата: 13.01.09 15:44
Оценка:
Здравствуйте, Дмитрий Глебенок, Вы писали:

ДГ>Всем привет!


ДГ>Есть следующая проблема:


ДГ>После добавление объекта PerformanceCounter в функцию Main в созданный .NET windows service, сервис стартует только один раз.


Могу дать простой совет. Посмотрите сами, что там происходит. Под отладчиком.

Но вносить такой код в сам Main я нахожу достаточно странным...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.