#vb.net #multithreading
#vb.net #многопоточность
Вопрос:
Я использую vb.net в Visual Studio 2008. Я настроил общедоступный подраздел внутри модуля, который я пытаюсь использовать несколькими потоками для обновления расширенного текстового поля.
Обычно я бы использовал ME.INVOKEREQUIRED
…., но это говорит мне, что «ME» недопустимо внутри модуля.
Не мог бы кто-нибудь, пожалуйста, указать мне правильное направление здесь?
Комментарии:
1. Не могли бы мы, пожалуйста, посмотреть ваш
Module
код, пожалуйста? Кажется странным, что вы пытаетесь получить доступ к коду пользовательского интерфейса изModule
.2. привет, Пол, если ты все еще смотришь это, у меня здесь нет кода, но я использую эту функцию для размещения обновлений того, что моя программа делает в этом текстовом поле, я использую более 5 потоков, и я хочу, чтобы каждый поток мог сообщать о прогрессе, ошибках или что-то еще в этом текстовом поле, которое я надеялся просто сделать одним общим подразделом в модуле для обработки всего этого.
3. Кажется, я понимаю, к чему вы клоните. Вероятно, вам просто нужна ссылка на форму, которую вы хотите получить на выходе в вашем модуле. Тем не менее, я бы не стал использовать модуль по уже упомянутым причинам, но общий метод в порядке. Кроме того, существует много-много способов управлять подобными вещами. Это один из них.
Ответ №1:
Вам нужно проверить InvokeRequired
свойство вашего RichTextBox
экземпляра.
Ответ №2:
Это верно. VB Module
является статическим классом, и Me
ключевое слово для него не имеет смысла. Вам нужен экземпляр a, class
который будет использоваться Me
. Он также должен быть производным от Control, если вы собираетесь cal InvokeRequired
. Вероятно, вам нужно создать и открыть Form
из вашего модуля.
Ознакомьтесь с этой статьей VB о доступе к элементам управления из рабочих потоков, чтобы начать.
Кстати, я придерживаюсь мнения, что модули — ужасная идея и их никогда не следует использовать вне кода точки входа приложения. Статические классы полезны, но модуль не только статичен, но и полностью глобален. т. е. все его элементы доступны по всему миру. Эта ситуация может стать очень проблематичной…