Что касается вашего первого вопроса, я не совсем уверен, но обзор из онлайн, кажется, показывает, что иногда это не вызывает исключения, но не обновляет ярлык. Это тот случай здесь? Ваш лейбл обновляется без каких-либо исключений?
Однако я могу ответить на второй вопрос прямо сейчас. Событие ProgressChanged
предназначено именно для того, как оно звучит. Предполагается, что он вызывается, чтобы поток пользовательского интерфейса узнал о состоянии фонового работника, чтобы он мог соответствующим образом обновлять себя. Исходный вызывающий поток (в данном случае пользовательский интерфейс) - это тот, который используется для ProgressChanged
, поэтому при обновлении ему не нужно вызывать Invoke
. Но на самом деле это нужно делать только для демонстрации прогресса фонового работника.
Теперь, если это не обновление, которое вы пытаетесь передать вызывающему методу, я бы предложил просто передать ваши возвращаемые данные обратно через событие RunWorkerCompleted
. Это передает все ваши окончательные данные обратно в исходный поток (UI), так что он может обновлять интерфейс без необходимости Invoke
.
Так что, да, ваш звонок на Invoke
будет работать, хотя. Однако понимание того, для чего предназначено каждое из других событий, может помочь вам понять, почему использовать один путь над другим. Может быть, ProgressChanged
событие подходит лучше? Он также может избавить ваш код от ненужных вызовов.
Обновление до первого q
Я все еще не могу найти что-нибудь о панели инструментов, не нуждающейся в вызове. На самом деле, я нахожу противоположное с помощью поисков Google, таких как «toolstriplabel без перекрестного потока исключений» или «toolstriplabel invoke» и т. Д. Однако, как упоминал Хенк, toolstriplabel не наследуется от контроля, что может объяснить, почему не требуется никакого вызова. Однако я предлагаю предположить, что он будет действовать как любой другой элемент управления пользовательского интерфейса, и убедиться, что он обновлен в потоке пользовательского интерфейса, чтобы быть безопасным. не полагайтесь на причуды . Лучше быть в безопасности, чем потом сожалеть, вы никогда не знаете, могут ли такие вещи измениться, тем более что это логически элемент пользовательского интерфейса для большинства ..,