Где хранить информацию о прогрессе в веб-приложении ASP.Net - PullRequest
1 голос
/ 21 июля 2011

Я создаю страницу, которая загружает текстовые файлы и объединяет их в несколько PDF-файлов.Они просто экспортируются из Excel.Каждая строка в файле соответствует новому PDF, который необходимо создать.

В любом случае, после загрузки файлов я хочу начать их обработку, но я не хочу, чтобы пользователь оставался настраница, или даже до сих пор их сеанс открыт.Например, они могут закрыть браузер и вернуться через 10 минут, войти в систему, и информация о ходе выполнения будет выглядеть как обработанные файлы 112/200 или что-то в этом роде.Это будет гораздо быстрее, чем это.как только работа началась (чтобы браузер не останавливался)?Во-вторых, где я могу хранить эту информацию, чтобы, когда пользователь возвращается на страницу, он мог видеть текущий прогресс.

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

1 Ответ

0 голосов
/ 28 июля 2011

Я решил это, используя ссылку, предоставленную astander выше.Я просто создаю объект в HttpContext.Application для хранения переменных прогресса, а затем устанавливаю метод, который выполняет мою обработку в новом потоке.

// Create the new progress object
BatchProgress bs = new BatchProgress(0);
if(Application["BatchProgress"] != null)
{
    // Should never happen
    Application["BatchProgress"] = bs;
}
else
{
    Application.Add("BatchProgress","bs");
}

//Set up new thread, run batch is the method that does all the processing.
ThreadStart ts = new ThreadStart(RunBatch);
Thread t = new Thread(ts);
t.Start();

Затем он возвращается после запуска потока, и я могу использовать jQueryчтобы получить объект Application ["BatchProgress"] через равные промежутки времени.В конце моего потока объект BatchProgress имеет состояние «Завершено», затем, когда jQuery запрашивает его, он видит состояние «завершено» и удаляет объект прогресса из приложения.

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