2009-10-08 2 views
0

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

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

У меня есть 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. Выполнены

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

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

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

ответ

0

Посмотрите на ссылку this о многопоточных замках.

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

Смежные вопросы