Лучший способ показать прогресс какого-то процесса в представлении? - PullRequest
2 голосов
/ 22 ноября 2011

Понятия не имею, как это сделать, но думаю, что это возможно. То, что я хочу сделать, это показать прогресс некоторого процесса (цикла) на мой взгляд.

Я использую C # ASP.NET MVC3 / RAZOR

Пример кода:

public ActionResult Index()
{
    for (int i = 0; i < 100; i++)
    {
        System.Threading.Thread.Sleep(100); // Simulate...
    }

    return View();
}

И, на мой взгляд, я просто хочу сделать простой текст вроде 44/100.

Возможно ли это, и если да, то каков наилучший способ достижения этого?

1 Ответ

1 голос
/ 22 ноября 2011

Комментарий BNL выше верен.

  1. Запустите задачу в другом потоке, используя библиотеку Task Parallel. Обновить ход выполнения задачи.
  2. Напишите метод действия, который опрашивает прогресс каждые несколько секунд, используя ajax.
  3. Обновите ваш пользовательский интерфейс в зависимости от прогресса.

Как вы отслеживаете прогресс?

  1. Создание идентификатора задачи в базе данных (скажем, таблица с 2 столбцами: guid и значение прогресса).
  2. Возвращает значение идентификатора задачи из метода действия.
  3. Отправьте идентификатор задачи в вашем вызове ajax, чтобы вы могли указать серверу сообщить вам о выполнении указанной задачи.

И да, стоит повторить: не запускайте длинные задачи в потоке веб-сервера. Запустите службу Windows и позвольте ей запускать задачи для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...