Сообщение Re: Кто должен инициировать курсор-часики на время длительны от 18.03.2017 8:02
Изменено 18.03.2017 8:24 Sinix
Re: Кто должен инициировать курсор-часики на время длительных операций?
		Здравствуйте, ylem, Вы писали:
Y>Логика? Вроде бы нет, потому что в конце концов может она сейчас без UI крутится или UI не блокирует.
Y>UI? Вроде бы тоже нет, потому что откуда ему знать, какие операции логики потребуют часиков.
Внезапно, это один из немногих примеров, не котором можно объяснить IoC.
У нас есть UI, который может, но не знает когда.
У нас есть биз-логика, которая знает когда, но по определению не может.
Особого выбора тут нет, только спрятать часть "я могу показывать уведомления" за события / интерфейс и подсовывать её в бизнес-логику.
В коде будет выглядеть так же, как и у тебя, но ничего не мешает допилить до прогресса / возможности отмены, аля
(нормальные имена лень придумывать).
Какие ещё варианты?
		
	Y>Логика? Вроде бы нет, потому что в конце концов может она сейчас без UI крутится или UI не блокирует.
Y>UI? Вроде бы тоже нет, потому что откуда ему знать, какие операции логики потребуют часиков.
Внезапно, это один из немногих примеров, не котором можно объяснить IoC.
У нас есть UI, который может, но не знает когда.
У нас есть биз-логика, которая знает когда, но по определению не может.
Особого выбора тут нет, только спрятать часть "я могу показывать уведомления" за события / интерфейс и подсовывать её в бизнес-логику.
В коде будет выглядеть так же, как и у тебя, но ничего не мешает допилить до прогресса / возможности отмены, аля
using (var scope = notifyService.OpenLongRunningScope("бла-бла-бла"))
{
  // ...
  scope.NotifyProgress(0.1, "...");
  // ...
  if (scope.CancelRequested) return ...;
  // ...
}(нормальные имена лень придумывать).
Какие ещё варианты?
Re: Кто должен инициировать курсор-часики на время длительны
		Здравствуйте, ylem, Вы писали:
Y>Логика? Вроде бы нет, потому что в конце концов может она сейчас без UI крутится или UI не блокирует.
Y>UI? Вроде бы тоже нет, потому что откуда ему знать, какие операции логики потребуют часиков.
Внезапно, это один из немногих примеров, на котором можно объяснить IoC.
У нас есть UI, который может, но не знает когда.
У нас есть биз-логика, которая знает когда, но по определению не может.
Особого выбора тут нет, только спрятать часть "я могу показывать уведомления" за события / интерфейс и подсовывать её в бизнес-логику.
В коде будет выглядеть так же, как и у тебя, но ничего не мешает допилить до прогресса / возможности отмены, аля
(нормальные имена лень придумывать).
Какие ещё варианты?
		
	Y>Логика? Вроде бы нет, потому что в конце концов может она сейчас без UI крутится или UI не блокирует.
Y>UI? Вроде бы тоже нет, потому что откуда ему знать, какие операции логики потребуют часиков.
Внезапно, это один из немногих примеров, на котором можно объяснить IoC.
У нас есть UI, который может, но не знает когда.
У нас есть биз-логика, которая знает когда, но по определению не может.
Особого выбора тут нет, только спрятать часть "я могу показывать уведомления" за события / интерфейс и подсовывать её в бизнес-логику.
В коде будет выглядеть так же, как и у тебя, но ничего не мешает допилить до прогресса / возможности отмены, аля
using (var scope = notifyService.OpenLongRunningScope("бла-бла-бла"))
{
  // ...
  scope.NotifyProgress(0.1, "...");
  // ...
  if (scope.CancelRequested) return ...;
  // ...
}(нормальные имена лень придумывать).
Какие ещё варианты?