Как мне задержаться до тех пор, пока элемент списка SharePoint не будет удален с помощью SPLongOperation?

У меня есть рабочий процесс, который создает задачу и удаляет ее после редактирования задачи и получения ее полезной информации. Я создал настраиваемую форму редактирования для задачи, поэтому у меня есть SPLongOperation, которую я могу использовать для остановки страницы. Это необходимо, потому что, если я не остановлю страницу каким-либо образом, человек увидит задачу в списке задач в тот момент, когда рабочий процесс удалит задачу, и это плохо. Поэтому необходим некоторый код для остановки страницы до тех пор, пока задача не будет полностью удалена.

В настоящее время я реализовал решение для этого, но меня не устраивает такой подход. По сути, это сводится к циклу while, который вызывает SPList.GetItemById до тех пор, пока он не выдаст ошибку. Меня не устраивает преднамеренная попытка вызвать ошибку, но я не могу придумать более быстрого метода для проверки этого. Я ищу альтернативы, которые предпочтительно работали бы быстрее, если не так быстро, и желательно без перехвата исключений.


person Grace Note    schedule 16.04.2010    source источник


Ответы (1)


Как насчет использования SPQuery для поиска идентификатора и если не находит, продолжайте. Это не вызывает исключений.

person Jeroen Ritmeijer    schedule 16.04.2010
comment
Итак, инициализируйте запрос для идентификатора вне цикла while, затем запустите цикл до SPList.GetItems(q).Count == 0? Размышляя в этом направлении, я действительно не играл с LINQ, но будет ли это работать быстрее? - person Grace Note; 16.04.2010
comment
Не нужно возиться с LINQ, просто повторите запрос в цикле с Thread.Sleep (100), и все должно быть в порядке. Я не знаю вашей точной логики или почему это проблема, но SPQuery - эффективный способ запроса даже в больших списках. - person Jeroen Ritmeijer; 16.04.2010
comment
Это не проблема ... просто цель этого вопроса - изучить все возможности. Спрашивать о подобном подходе казалось, что соответствовало этой логике. - person Grace Note; 16.04.2010