Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Многопоточность. Ошибка


Автор: Zhenek 15.11.2009, 16:18
Код

Public Class POP3
Delegate Sub addres(ByVal msg As String)
...
Me.Invoke(New addres(AddressOf adder2), "No Password Specified!")
....

End Class


Вообщем есть листбокс на форме. И класс.  Мне нужно с класса в потоке обратиться к листбоксу. Пробую так как написано выше.

Пишет : Пишет : "Invoke" не является членом Проект.POP3

Помогите(((

Автор: diadiavova 15.11.2009, 16:35
А как именно обратиться? Что конкретно надо сделать?

Автор: tol05 15.11.2009, 19:06
Zhenek, под
Код

Me.Invoke
подразумевался метод Control.Invoke? Или Form.Invoke? 

А где видно, что класс POP3 является прямым или косвенным наследником данных классов? Отчего Вы считаете, что метод Invoke должен у этого класса быть?

Автор: Zhenek 17.11.2009, 08:02
Подключаю в форме form1   так :

Код

 popConn = New Проект.POP3
popConn.POPConnect(use_serv, login, pass, use_port)


Вот и собственно мне нужно как-то из класса передать форме созданой в другом потоке значение и занести его в листбокс

Автор: diadiavova 17.11.2009, 11:55
Цитата(Zhenek @  17.11.2009,  08:02 Найти цитируемый пост)
Вот и собственно мне нужно как-то из класса передать форме созданой в другом потоке значение и занести его в листбокс

Сделай это через Invoke самой формы.

Добавлено через 2 минуты и 21 секунду
Вместо этого
Код

Me.Invoke(New addres(AddressOf adder2), "No Password Specified!")
сделай так
Код

form1.Invoke(New addres(AddressOf adder2), "No Password Specified!")
если, конечно, form1 - ссылка на эту форму( а не имя класса к примеру).

Автор: Zhenek 17.11.2009, 12:40
Пробовал пишет :


Invoke or BeginInvoke cannot be called on a control until the window handle has been created.


Автор: diadiavova 17.11.2009, 13:02
Это означает, что ты пытаешься вызвать метод до того, как создано окно(точнее дескриптор окна).
Вот выкладываю пример. Здесь в обработчике события Load формы инициируется создание объекта в другом потоке. В конструкторе объекта запоминается ссылка на форму, выдерживается пятисекундная пауза, а затем в лейбл формы(в другом потоке) выводится текст.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)