Как мне управлять многопоточностью в приложениях MVVM c# - PullRequest
0 голосов
/ 08 марта 2020

Как я понимаю, мое приложение должно работать в одном потоке (потоке пользовательского интерфейса), и есть 2 случая, когда я могу захотеть выполнить код в другом потоке:

  1. есть длинный выполняемое задание, например, доступ к системе / базе данных и т. д.

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

    • , они должны планироваться в потоке пользовательского интерфейса с помощью диспетчера
  3. Дополнительные предположения:

    • модель должна изолировать многопоточность
    • в моделях представления не должно быть диспетчерских вызовов

Правильно ли это резюме?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...