Требуется иллюстрация кода блокировки процесса - PullRequest
0 голосов
/ 08 октября 2009

Я недавно начал этот вопрос в другой ветке (к которой Рид Копси милостиво ответил) но я не чувствую, что я сформулировал вопрос хорошо.

В основе моего вопроса я хотел бы показать, как получить доступ к данным КАК это получить / установить.

У меня есть Page.aspx.cs, и в коде у меня есть цикл:

           List<ServerVariable> files = new List<ServerVariable>();

            for (i = 0; i <= Request.Files.Count - 1; i++)
            {

                    m_objFile = Request.Files[i];
                    m_strFileName = m_objFile.FileName;
                    m_strFileName = Path.GetFileName(m_strFileName);

                files.Add(new ServerVariable(i.ToString(),
this.m_strFileName, "0"));

           }

           //CODE TO COPY A FILE FOR UPLOAD TO THE
           //WEB SERVER

            //WHEN THE UPLOAD IS DONE, SET THE ITEM TO
            //COMPLETED

            int index = files.FindIndex(p => p.Completed == "0");
            files[index] = new ServerVariable(i.ToString(),
this.m_strFileName, "1");

Тип «ServerVariable» получает и устанавливает идентификатор, файл и завершено.

Теперь мне нужно показать пользователю процесс загрузки файла (по сути, время между тем, когда цикл добавляет элемент ServerVariable к список, когда статус «Завершено» изменяется с 0 на 1.

Теперь у меня есть метод веб-службы "GetStatus ()", который я хотел бы используйте для возврата списка файлов (созданного выше) в виде строки JSON (через JQuery). Файлы с завершенным статусом 0 все еще находятся в процессе, файлы с 1 готовы.

МОЙ ВОПРОС - как выглядит код внутри GetStatus ()? Как я могу запросить список ** как * он заполняется и вернуть результаты в режиме реального времени? Мне сообщили, что мне нужно заблокировать рабочий процесс (настройка данных ServerVariable) во время запроса значения возвращаются в GetStatus (), а затем разблокировать тот же процесс?

Если бы я хорошо объяснил себя, я был бы признателен за кодовую иллюстрацию логика в GetStatus ().

Спасибо за чтение.

1 Ответ

0 голосов
/ 08 октября 2009

Посмотрите эту ссылку о многопоточных блокировках.

Вам необходимо заблокировать объект как для чтения, так и для записи.

...