Я запускаю проект WPF в .NET Framework 4.5.1. Иногда метод выполняется на фоне потока блоковWPF Resource [this object key] вызывает тупик
lock (some_lock_up_the_callstack)
...
var rsc = App.Current.Resources["some_key"] as System.Windows.Media.Imaging.BitmapImage
В то же время главный поток также ждет на some_lock_up_the_callstack
при попытке получить доступ к DataBinding.
Запрошенный ресурс клавишей some_key
на самом деле находится в объединенном словаре.
Возможно, я не могу воспроизвести эту проблему с небольшим тестовым проектом, и the msdn article на нем, похоже, не покрывает точки безопасности нитей. Я попытался заблокировать основной поток и попытался получить доступ к ресурсам, пока он был заблокирован, чтобы увидеть, если Accessor блокирует основной поток, но это, похоже, не так. По крайней мере, я не могу воспроизвести его.
Любая помощь очень ценится!
Вы ожидаете своей фоновой задачи в любом месте контекста пользовательского интерфейса? – grek40
Да, основной поток ждет блокировки, удерживаемой фоновым потоком. – Tom
Не то, что я имел в виду, но это не имеет значения (просто что-то проверили). Во всяком случае, блокировка вашего потока пользовательского интерфейса звучит как плохой подход ... как насчет запуска другой задачи для вашего действия блокировки или без блокировки чтения на вашем ресурсном доступе? – grek40