Не можете ли вы использовать ngOnInit
, потому что вы просто изменяете переменную-член message
?
Если вы хотите получить ссылку на дочерний компонент @ViewChild(ChildComponent)
, вам действительно нужно подождать это с ngAfterViewInit
.
Грязное исправление - вызвать updateMessage()
в следующем цикле событий, например, setTimeout.
ngAfterViewInit() {
setTimeout(() => {
this.updateMessage();
}, 1);
}
Вот способ, которым StackOverflow делает это:
private static CacheItemRemovedCallback OnCacheRemove = null;
protected void Application_Start(object sender, EventArgs e)
{
AddTask("DoStuff", 60);
}
private void AddTask(string name, int seconds)
{
OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);
HttpRuntime.Cache.Insert(name, seconds, null,
DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration,
CacheItemPriority.NotRemovable, OnCacheRemove);
}
public void CacheItemRemoved(string k, object v, CacheItemRemovedReason r)
{
// do stuff here if it matches our taskname, like WebRequest
// re-add our task so it recurs
AddTask(k, Convert.ToInt32(v));
}
Подробнее: http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/
Один способ сделать это, если Вы не должны делать этого на запланированном времени, но просто должны вымыться "время от времени", должно создать функцию в Вашем Global.asax Session_OnEnd (), который создаст случайное число между 1 и 100, и если число, говорят, 50, Вы выполняете задачу обслуживания.
Offcourse, которые можно уменьшить "100", чтобы иметь задачу, происходят более часто.
Также существует, и статья, названная ', Моделируют службу Windows с помощью ASP.NET для выполнения запланированных заданий' по http://www.codeproject.com/aspnet/ASPNETService.asp, который использует истекающий кэш для моделирования таймера. Это утверждает, что может быть выполнено на любом размещенном сайте.
При использовании последнего прочитайте этот комментарий из сообщения об этой технике:
Необходимо действительно быть осторожными на продолжительности выполнения задачи. Каждой новой Задачей является новый Рабочий поток и существует ограниченное количество тех - поскольку это “одалживает” поток у управляемого пула потоков.
При запуске в v3.5 Платформы максимальное число потоков было увеличено 10x от 25 до 250. Но существует теперь логарифмический запуск им, поэтому поскольку он скупо выдает больше потоков, это становится более скупым с ними. Если у Вас заканчиваются доступные потоки в управляемом пуле потоков - Ваше время отклика собирается пройти крышу.
Что Вы действительно пишете, вот обмен сообщениями/система массового обслуживания.
Если Вы делаете вещи как обновление кэша, то любой ценой - начинают новую задачу. Если Вы делаете, что-то как загрузка вторичного ресурса HTTP или некоторой интенсивной работы базы данных - пишет службу Windows и использует Очередь, которая позволяет Вам больше управления, сколько Вы “кусаете” от каждого раза.
В то время как решение для Кэша работает на простые случаи, если Ваши потребности планирования когда-нибудь будут изменяться, то Вам не повезет. Вместо этого Вы могли использовать Quartz.NET, порт популярного Кварца платформы Java, который очень гибок.
В то время как способ, которым StackOverflow делает это, определенно уникален, можно хотеть контролировать этот вопрос также, так как он имеет отношение.
это - внешний процесс, и я не знаю, как надежный, но Вы могли установить что-то подобное на машине, которую Вы знаете, всегда находится на www.webcron.org.
В основном то, что это делает, является хитами страница, к которой Вы запрашиваете это в расписании, которое Вы запрашиваете.
У Вас по существу могло быть что-либо, поразил страницу в регулярный график, который начнет Вашу задачу обслуживания.
Jeff и Joel также обсудили выполнение подобных вещей в недавнем подкасте с помощью других методов.