Каков тайм-аут для запуска сервиса окон?

С Eclipse Collections , все следующие будут работать:

import java.util.Map;

import org.eclipse.collections.api.map.ImmutableMap;
import org.eclipse.collections.api.map.MutableMap;
import org.eclipse.collections.impl.factory.Maps;

public class StaticMapsTest
{
    private static final Map MAP =
        Maps.mutable.with(1, "one", 2, "two");

    private static final MutableMap MUTABLE_MAP =
       Maps.mutable.with(1, "one", 2, "two");


    private static final MutableMap UNMODIFIABLE_MAP =
        Maps.mutable.with(1, "one", 2, "two").asUnmodifiable();


    private static final MutableMap SYNCHRONIZED_MAP =
        Maps.mutable.with(1, "one", 2, "two").asSynchronized();


    private static final ImmutableMap IMMUTABLE_MAP =
        Maps.mutable.with(1, "one", 2, "two").toImmutable();


    private static final ImmutableMap IMMUTABLE_MAP2 =
        Maps.immutable.with(1, "one", 2, "two");
}

Вы также можете статически инициализировать карты примитивов с Eclipse Collections.

import org.eclipse.collections.api.map.primitive.ImmutableIntObjectMap;
import org.eclipse.collections.api.map.primitive.MutableIntObjectMap;
import org.eclipse.collections.impl.factory.primitive.IntObjectMaps;

public class StaticPrimitiveMapsTest
{
    private static final MutableIntObjectMap MUTABLE_INT_OBJ_MAP =
            IntObjectMaps.mutable.empty()
                    .withKeyValue(1, "one")
                    .withKeyValue(2, "two");

    private static final MutableIntObjectMap UNMODIFIABLE_INT_OBJ_MAP =
            IntObjectMaps.mutable.empty()
                    .withKeyValue(1, "one")
                    .withKeyValue(2, "two")
                    .asUnmodifiable();

    private static final MutableIntObjectMap SYNCHRONIZED_INT_OBJ_MAP =
            IntObjectMaps.mutable.empty()
                    .withKeyValue(1, "one")
                    .withKeyValue(2, "two")
                    .asSynchronized();

    private static final ImmutableIntObjectMap IMMUTABLE_INT_OBJ_MAP =
            IntObjectMaps.mutable.empty()
                    .withKeyValue(1, "one")
                    .withKeyValue(2, "two")
                    .toImmutable();

    private static final ImmutableIntObjectMap IMMUTABLE_INT_OBJ_MAP2 =
            IntObjectMaps.immutable.empty()
                    .newWithKeyValue(1, "one")
                    .newWithKeyValue(2, "two");
} 

Примечание: Я коммиттер Eclipse Collections

9
задан Grzenio 21 July 2009 в 16:32
поделиться

3 ответа

В своем классе обслуживания используйте ServiceBase.RequestAdditionalTime () в методе OnStart / OnStop:

// request an additional 4 seconds to complete the operation
RequestAdditionalTime(4000);  
15
ответ дан 4 December 2019 в 07:14
поделиться

Обычный способ создания службы - это когда код запуска создает новый поток и запускает вашу службу в этом thread.

Запуск службы должен быть почти мгновенным - не что иное, как порождение нового потока с вашей «настоящей» работой.

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

13
ответ дан 4 December 2019 в 07:14
поделиться

Что касается конкретного вопроса, то точное время ожидания варьируется, но составляет менее 30 секунд. Вы можете управлять тайм-аутом запуска службы по умолчанию с помощью ключа реестра, как это сделать , вы можете увидеть здесь .

Однако я соглашусь со многими другими, что я бы рассмотрел два возможных варианта.

  1. Запустите службу как можно скорее, создайте поток и т. Д.
  2. Если вы не можете выбрать вариант 1, вы можете использовать RequestAdditionalTime (). Только не забудьте сделать этот вызов заранее.
2
ответ дан 4 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: