Windows сама обрабатывает фоны на некоторых машинах - PullRequest
0 голосов
/ 13 января 2011

У меня есть программа, которая написана для запуска на переднем плане. Но оно само по себе на некоторых машинах .

Вот контекст.

У меня есть класс, производный от ServiceBase,

public class MyService: ServiceBase

В целях отладки я не запускаю службу следующим образом:

ServiceBase.Run(myService);

Вместо этого я вызываю OnStart напрямую следующим образом и сплю навсегда:

myService.OnStart(null);
System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);

По какой-то причине процесс работает на производственном компьютере. Идеи?

Ответы [ 2 ]

1 голос
/ 14 января 2011

Оказывается, это потому, что VS устанавливает для OutputType проекта службы WinExe (в отличие от Exe для консольного приложения). WinExe сами исполняют фон. И поведение, по-видимому, было разным на двух машинах, потому что на одной я был в оболочке cygwin, где по какой-то причине он сам не справился.

0 голосов
/ 13 января 2011

Я считаю, что Windows на самом деле обращает внимание на статус «основного» потока, выполняющего ваше приложение.Если он видит, что «главный» поток спит, то IIRC может задокументировать весь процесс.Выбор того, когда или что делать в фоновом режиме, часто связан с функциями энергосбережения, такими как на ноутбуке.

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