Мои предпочтения должны использовать
try
{
}
catch (Exception ex)
{
...
throw new Exception ("Put more context here", ex)
}
, Это сохраняет исходную ошибку, но позволяет Вам помещать больше контекста, такого как идентификатор объекта, строка подключения, материал как этот. Часто мой инструмент создания отчетов исключения будет иметь 5 цепочечных исключений для создания отчетов, каждый сообщающий о большем количестве детали.
Хороший вопрос!
В то время как ToolStripStatusLabel
не наследуется от элемента управления, содержащий ToolStrip
наследуется! Используйте Invoke, содержащий ToolStrip
, чтобы выполнять вызовы ToolStripStatusLabel
.
Это потому, что ToolStrip вручную обрабатывает отрисовку своих компонентных битов, почти так же, как WPF. отображение всех битов его компонентов без создания отдельного дескриптора для каждого из них. Это полезно, потому что легко забыть, что каждый Control
имеет ассоциированную HANDLE
, а в системе есть только конечное их количество, например
(я сталкивался с этим и раньше.Я упомянул об этом на боковой панели на , другой вопрос , например.
Кроме того, как правило, у вас нет для использования InvokeRequired и BeginInvoke на том же самом элементе управления, которым вы манипулируете в коде, если вы можете гарантировать, что управляемый вами элемент управления был создан в том же потоке (например, в подпрограмме инициализации форм), в качестве элемента пользовательского интерфейса, для которого вы вызываете InvokeRequired / BeginInvoke.