Как я понимаю, мое приложение должно работать в одном потоке (потоке пользовательского интерфейса), и есть 2 случая, когда я могу захотеть выполнить код в другом потоке:
есть длинный выполняемое задание, например, доступ к системе / базе данных и т. д.
- такой код должен использовать async / await
- , когда выполнение достигает фактического доступа к файлу, библиотека для обработки должна использовать
.ConfigureAwait(false)
, который запланирует продолжение в другом потоке из пула потоков - , затем возобновится некоторое другое ожидание в коде приложения (без
.ConfigureAwait(false)
) в потоке пользовательского интерфейса
существуют асинхронные уведомления от других потоков (системы, устройства и т. д. c.)
- , они должны планироваться в потоке пользовательского интерфейса с помощью диспетчера
Дополнительные предположения:
- модель должна изолировать многопоточность
- в моделях представления не должно быть диспетчерских вызовов
Правильно ли это резюме?