User 13204940 Ответов: 1

Простой вызов делегата не работает


Привет
Это не работает, и я потратил целый час, пытаясь понять, почему. Есть идеи?

В другом потоке в другом классе (экземпляр)
Main.updateMessages("whatever")


В Main .vb (экземпляр по умолчанию)
Private Delegate Sub MainUpdateDelegate(message As String)

   Public Sub updateMessages(message As String)
       If InvokeRequired Then
           Invoke(New MainUpdateDelegate(AddressOf updateMessages), message)
       Else
           ListBox1.Items.Add(message)
       End If
   End Sub


Решение: оказывается, проблема заключалась в том, что я должен был передать "Я" из Main в класс и использовать этот экземпляр, а не просто сказать "Main. & lt;method>"

Что я уже пробовал:

MethodInvoker, который не принимает парамы, поэтому бесполезен для этого

Kornfeld Eliyahu Peter

"не работает" - это очень плохое определение любой проблемы...
Что происходит?
Есть какие-то ошибки?
Вы отладили его?

User 13204940

Я знал, что ты это прокомментируешь. Он не обновляет список, я думал, что это было бы очевидно. MsgBox показывает, что этот фрагмент кода действительно доступен. Оказывается, проблема заключалась в том, что я должен был передать "меня" из Main в класс и использовать этот экземпляр, а не просто сказать " Main. & lt;method>"

Kornfeld Eliyahu Peter

Ничто не очевидно, когда задействованы компьютеры и разработчики :-)

Patrice T

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

1 Ответов

Рейтинг:
1

Maciej Los

Цитата:
Решенный: Оказывается, проблема была в том, что я должен был пройти "Me"от Главного к классу и используйте этот экземпляр, а не просто говорите "Main.<method>"


Опубликовано, чтобы удалить вышеприведенный вопрос из списка без ответа.