IProgress как часто сообщать о прогрессе?C#

Место общения программистов C#
Ответить
Anonymous
 IProgress как часто сообщать о прогрессе?

Сообщение Anonymous »

При использовании IProgress для отчета о ходе выполнения
  • должен ли код сообщать о прогрессе ограничивать свои отчеты о ходе выполнения с "разумной" частотой -или-
  • ответственность за конкретную реализацию IProgress, чтобы осознавать, что отчеты о ходе работы могут быть несвоевременными. более высокая частота, чем разумно для того, как он будет представлять этот прогресс.
Контекст вопроса: у меня есть код, который использует IProgress , чтобы сообщить о прогрессе, и он сообщает о прогрессе с очень высокой скоростью. Я хочу отображать прогресс с помощью индикатора выполнения пользовательского интерфейса. Если я использую предоставленную реализацию Progress (которая сообщает о прогрессе в UI SyncronizationContext), то это приводит к тому, что пользовательский интерфейс не отвечает (т. е. в очередь сообщений отправляется так много сообщений, что пользователь даже не может нажать кнопку «Отмена» в диалоговом окне).
Итак,
  • Я мог бы исправьте это, сообщая меньше, но что, если бы у меня была реализация IProgress, которая просто записывала прогресс в файл журнала (и могла бы обрабатывать высокую частоту отчетов). -или-
  • Я мог бы исправить это, создав свою собственную реализацию IProgress, которая ограничивала бы частоту обработки/отчета о прогрессе. Предположительно, эта реализация будет записывать последний прогресс в потоке, не связанном с пользовательским интерфейсом, а затем (возможно) пользовательский интерфейс будет обновляться по таймеру.


Подробнее здесь: https://stackoverflow.com/questions/196 ... t-progress
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»