Что родитель замораживаем? Что означает эта ошибка?

Я думаю, что можно просто добавить что условие с or:

Helper_IsName? = Text.Contains([OldValue]," ") or [OldValue] = "University"
11
задан mmr 5 September 2012 в 14:11
поделиться

1 ответ

Хорошо, я разобрался. Обычно я бы просто удалил этот вопрос, но было сложно найти какую-либо информацию о том, как это исправить.

Проблема заключалась в вызове, который выглядел так:

ImageBrush theBrush = new ImageBrush(new Bitmap(new Uri(...)));

if (labelStatus.Dispatcher.Thread == System.Threading.Thread.CurrentThread) {
    button.background = theBrush;
}
else {
   labelStatus.Dispatcher.BeginInvoke((System.Threading.ThreadStart)(delegate {
    button.background = theBrush;
   }));
}

Но! если вы это сделаете, диспетчер сработает, а затем попытается удалить кисть, но сама кисть, очевидно, также удаляется в другом месте.

Итак, главный урок заключается в том, что если вы объявляете ImageBrush, затем удалите его в том же потоке, например:

void MyFunc(){
     ImageBrush theBrush = new ImageBrush(new Bitmap(new Uri(...)));
     button.background = theBrush;
}

if (labelStatus.Dispatcher.Thread == System.Threading.Thread.CurrentThread) {
    MyFunc();
}
else {
   labelStatus.Dispatcher.BeginInvoke((System.Threading.ThreadStart)(delegate {
       MyFunc();
   }));
}
14
ответ дан 3 December 2019 в 08:31
поделиться
Другие вопросы по тегам:

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