Диспетчер WPF. BeginInvoke и UI/фоновые потоки

Мертвые блокировки только произойдут, когда у Вас будет две или больше блокировки, которые могут быть aquired одновременно, и они захватываются в различном порядке.

Способы постараться не иметь мертвые блокировки:

  • стараются не иметь блокировки (если возможный),
  • стараются не иметь больше чем одну блокировку
  • , всегда берут блокировки в том же порядке.
18
задан Matthew Ruston 30 July 2009 в 16:44
поделиться

2 ответа

Я искренне думаю, что BackgroundWorker - наиболее элегантное решение для этой проблемы. Я не могу придумать более простого способа сделать это.

25
ответ дан 30 November 2019 в 07:33
поделиться

Ответ Чарли - это то, что вы действительно ищете.

Однако, если это возможно, вы можете посмотреть, можете ли вы распределить свою работу так, чтобы отдельные единицы работы были маленькие и не так сильно влияют на пользовательский интерфейс. Это позволит вам просто использовать Диспетчер напрямую. На странице WPF Threading есть хороший пример: https://msdn.microsoft.com/en-us/library/ms741870%28v=vs.100%29.aspx

4
ответ дан 30 November 2019 в 07:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: