Как я выполняю перекрестные потоковые вызовы к ToolStripStatusLabel?

Мои предпочтения должны использовать

try 
{
}
catch (Exception ex)
{
     ...
     throw new Exception ("Put more context here", ex)
}

, Это сохраняет исходную ошибку, но позволяет Вам помещать больше контекста, такого как идентификатор объекта, строка подключения, материал как этот. Часто мой инструмент создания отчетов исключения будет иметь 5 цепочечных исключений для создания отчетов, каждый сообщающий о большем количестве детали.

16
задан Maslow 14 July 2009 в 21:04
поделиться

2 ответа

Хороший вопрос!

В то время как ToolStripStatusLabel не наследуется от элемента управления, содержащий ToolStrip наследуется! Используйте Invoke, содержащий ToolStrip , чтобы выполнять вызовы ToolStripStatusLabel .

Это потому, что ToolStrip вручную обрабатывает отрисовку своих компонентных битов, почти так же, как WPF. отображение всех битов его компонентов без создания отдельного дескриптора для каждого из них. Это полезно, потому что легко забыть, что каждый Control имеет ассоциированную HANDLE , а в системе есть только конечное их количество, например

(я сталкивался с этим и раньше.Я упомянул об этом на боковой панели на , другой вопрос , например.

29
ответ дан 30 November 2019 в 17:28
поделиться

Кроме того, как правило, у вас нет для использования InvokeRequired и BeginInvoke на том же самом элементе управления, которым вы манипулируете в коде, если вы можете гарантировать, что управляемый вами элемент управления был создан в том же потоке (например, в подпрограмме инициализации форм), в качестве элемента пользовательского интерфейса, для которого вы вызываете InvokeRequired / BeginInvoke.

2
ответ дан 30 November 2019 в 17:28
поделиться
Другие вопросы по тегам:

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