Как я настраиваю единственный экземпляр компонента, предоставляющий многочисленные услуги в Замке. Виндзор?

Вы должны сделать переменную таймера более широкой областью действия, чтобы к ней можно было обращаться как из progress, так и ticker, и вам нужно очистить интервал, если он уже запущен, чтобы вы не могли иметь несколько интервалов, работающих одновременно :

var myTimer = null; // Declared here so it can be used in both functions

const ticker = function () {
  if(store.timer < 100){
    store.addToTimer() //mobX store action to add 1+ to the store.timer
  }      
};

function progress() {        
  store.timer = 0
  let time = Moment()
  let songEnd = Moment().add(1, "minutes")
  const durationToFinnish = Moment.duration(songEnd.diff(time));
  const intervalToTick = 100000 / durationToFinnish.asMilliseconds()  
  // Check to see if there is already a timer running
  if(myTimer){
    clearInterval(myTimer); // Stop the interval   
  }
  myTimer = setInterval(ticker, intervalToTick * 1000);    
}
<div className={classes.progressBar} id="progress">
            <div className={classes.innerProgressBar}>
                <span onClick={progress}>{store.timer}%</span><br></br>
            </div>
        </div>

6
задан Ash 26 March 2009 в 01:57
поделиться

3 ответа

Проверьте Вас ответ на этот вопрос (особенно ссылка сообщения форума), который, кажется, то, что Вы ищете. Некоторые примеры используют Переходный жизненный цикл, но я думаю, что он будет работать с Singleton также.

Основная выплата сообщения форума:

container.Register(Component.For<IEntityIndexController, ISnippetController>()
.ImplementedBy<SnippetController>()
.LifeStyle.Transient); 

Решением является использование быстрый интерфейс (и недавняя магистральная сборка), и не было возможно настроить в xml в последний раз, я видел. Однако это может быть возможно со средством.

Удачи!

3
ответ дан 17 December 2019 в 07:09
поделиться

Можно зарегистрировать экземпляр объекта (вместо реализации), чтобы быть ответственными за различные реализации:

  var ab = new AB();
  container.Register( Component.For<IA>().Instance( ab) );
  container.Register( Component.For<IB>().Instance( ab) );

Я полагаю, что это должно работать. Однако это требует в конфигурации кода по очевидным причинам.

0
ответ дан 17 December 2019 в 07:09
поделиться

Пробовали ли вы использовать метод Forward :

container.Register(Component.For<IEntityIndexController>()
.ImplementedBy<SnippetController>()
.Forward (typeof(ISnippetController))
.LifeStyle.Transient);

Из моих экспериментов и из документации:

зарегистрируйте типы сервисов от имени этого компонента

я думаю, это должно помочь.

1
ответ дан 17 December 2019 в 07:09
поделиться
Другие вопросы по тегам:

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