Укажите LoaderOptimization для служб Windows - PullRequest
1 голос
/ 19 июля 2010

Как мы указываем LoaderOptimizations при создании службы Windows, у нас нет нашего метода "Main", как в противном случае мы использовали бы

Другими словами, когда у нас есть простое консольное приложение, мы можем:

[LoaderOptimization(LoaderOptimization.MultiDomainHost)] 
private static void Main(string[] args)
{
}

, но для Сервиса мы реализуем класс ServiceBase и, следовательно, не имеем метода main, вместо этого у нас есть

protected override void OnStart(string[] args)
{
}

Но я предполагаю, что установкаатрибут этого метода не будет иметь тот же эффект?

1 Ответ

4 голосов
/ 19 июля 2010

У вас по-прежнему будет метод Main для службы Windows.Обычно это будет то место, где вы звоните ServiceBase.Run .Шаблон Visual Studio для проекта службы Windows создаст класс с именем Program, который выглядит примерно так и включает метод Main ():

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    static void Main()
    {
        ServiceBase[] ServicesToRun;
        ServicesToRun = new ServiceBase[] 
        { 
            new Service1() 
        };
        ServiceBase.Run(ServicesToRun);
    }
}

Вы должны иметь возможность добавить атрибут в Main ()Метод есть.

...