Re: Кто должен инициировать курсор-часики на время длительны
От: Sinix  
Дата: 18.03.17 08:02
Оценка: 6 (1)
Здравствуйте, ylem, Вы писали:

Y>Логика? Вроде бы нет, потому что в конце концов может она сейчас без UI крутится или UI не блокирует.

Y>UI? Вроде бы тоже нет, потому что откуда ему знать, какие операции логики потребуют часиков.

Внезапно, это один из немногих примеров, на котором можно объяснить IoC.

У нас есть UI, который может, но не знает когда.
У нас есть биз-логика, которая знает когда, но по определению не может.

Особого выбора тут нет, только спрятать часть "я могу показывать уведомления" за события / интерфейс и подсовывать её в бизнес-логику.
В коде будет выглядеть так же, как и у тебя, но ничего не мешает допилить до прогресса / возможности отмены, аля
using (var scope = notifyService.OpenLongRunningScope("бла-бла-бла"))
{
  // ...
  scope.NotifyProgress(0.1, "...");
  // ...
  if (scope.CancelRequested) return ...;
  // ...
}

(нормальные имена лень придумывать).

Какие ещё варианты?
Отредактировано 18.03.2017 8:24 Sinix . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.