Уведомить службу WCF об отмене выполняемой в данный момент операции и возврате оставшихся данных.
У меня есть это клиентское приложение, которое отправляет тысячи элементов для удаления в мой сервис wcf. Поскольку данные отправляются навалом, даже если я отменяю операцию (с индикатором выполнения), все элементы удаляются. Мне нужно иметь возможность отменить операцию удаления в службе и получить элементы, которые не были удалены. Спасибо.
1 ответ
Какой InstanceContextMode вы используете?
То, что вы хотите сделать, будет работать с InstanceContextMode Singleton или Session, но не с PerCall.
Я полагаю, что ваш метод, который инициирует массовое удаление, - это OneWay.
Создайте поле bool (изначально false) в вашем сервисе. Ваш цикл, который удаляет записи по одной, проверяет этот флаг и останавливается, если флаг установлен в true.
Создайте другой метод в вашем сервисе, который устанавливает для этого поля значение true. Вызвать новый метод с вашего сайта, когда вы нажмете кнопку "Отменить удаление". Цикл удаления записей будет прерван.
Возврат записей, которые не были удалены, будет немного сложнее. Ваш список записей для удаления также должен быть членом класса обслуживания, так что метод, который останавливает удаление, также имеет доступ к списку. Метод, который удаляет из базы данных базы данных, также удаляет записи из списка одну за другой, чтобы вы могли отслеживать оставшиеся элементы.
Вы можете сразу же вернуть во втором методе список, но это не гарантирует точных результатов. Что я хотел бы сделать, это подождать 200 мс, прежде чем вернуться. Таким образом, вы знаете, что элемент, удаленный из списка, действительно удаляется в БД.
Надеюсь, это понятно...