Асинхронные методы в веб-части - PullRequest
0 голосов
/ 12 января 2010

Я уже несколько дней кодирую веб-часть. Смысл этой веб-части - очистить заданную библиотеку документов. У меня там более 16 000 файлов сообщений, и я должен проверить заголовки «Кому» и «От» каждого файла сообщений на соответствие некоторым заданным правилам.

Все хорошо, за исключением того, что этот процесс длится вечно. Все возможные значения, допустимые в Кому или От, хранятся в списках SPL в самом SharePoint.

Мне удалось разделить процесс проверки на соответствие бизнес-правилам и самой веб-части, вызвав этот определенный метод проверки почты асинхронно.

Теперь техническая часть, в которой я немного растерялась:

Метод возвращает словарь, который я хочу привязать к CheckBoxList. Так как я могу это сделать? Потому что я должен ждать, пока мой метод проверки асинхронной почты не будет выполнен, пока я не смогу связать источник данных CheckBoxList?

Моя веб-часть фактически состоит из пользовательского элемента управления, который я загружаю в веб-часть.

Ответы [ 2 ]

0 голосов
/ 13 января 2010

Ваш асинхронный метод должен вызывать функцию обратного вызова, которая продолжает обработку. Этот обратный вызов должен выполнять связывание; это происходит только тогда, когда выполняется асинхронный процесс ..

В качестве альтернативы, с таким количеством предметов вы можете столкнуться с проблемами. Почему бы не создать полностью асинхронный процесс? Ваша веб-часть может запланировать задание однократного таймера в SharePoint, которое выполняет очистку полностью асинхронно Или запишите сведения о вашей работе в список, который можно получить с помощью запланированного выполнения или расширения команды stsadm. Это будет работать с любым количеством элементов в вашем списке.

0 голосов
/ 13 января 2010

Рассматривали ли вы использование jQuery / Ajax вместо пользовательских контролей и прямого кода? Вот как я справляюсь с асинхронной загрузкой своих веб-частей, имея в виду, что 99% наших разработок используют xml / xslt для генерации HTML.

...