Что такое самый простой способ обновить элемент HTML из другого потока?Обновить элемент html из потока
У меня есть страница Razor/HTML с кнопкой startJob, которая заставит ActionResult запустить длинный процесс в фоновом потоке, из которого я хочу, чтобы фоновый протектора обновил элемент Html текущего состояния. Как я могу это сделать?
public ActionResult StartJob(int[] instList)
{
permissionCheck = new Thread(CheckPermissions);
permissionCheck.Start();
var jr = new JsonNetResult();
jr.Formatting = Newtonsoft.Json.Formatting.Indented;
jr.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
jr.Data = (inQueue <= 0?0:inQueue);
return jr;
}
public void CheckPermissions()
{
for (int i = 0; i <= 100; i++)
{
Thread.Sleep(100);
//update the html element id status message
}
}
Не используйте ' Thread.Sleep', не гарантируется ждать минимального времени, вы должны использовать 'таймер', также почему бы не использовать' async' задачи? –
Если ответ уже отправлен клиенту, вы больше не можете его изменять. Похоже, вы ищете что-то вроде SignalR (веб-сокеты) или, по крайней мере, какое-то решение для опроса AJAX. Код на стороне сервера не может «изменить элемент HTML», который находится в браузере. – David