Как вызвать поток GUI в VB.NET из SignalR Hub
У меня есть проблема, касающаяся следующего фрагмента кода (C#):
stockTickerHub.On("notify", () =>
Context.Post(delegate
{
mainForm.textBox1.Text += "Notified!\n";
}, null)
);
Приведенный выше код выполняется в асинхронной подпрограмме в модуле VB.NET. Мне не разрешен доступ к Text-свойству textBox1. Как выглядит приведенный выше код в VB.NET?
Я старался:
myHub.On(Of String, String)("addMessagea", _
Sub(nam, param)
mainForm.textBox1.Text = param.ToString()
Console.WriteLine("Should have append '" + nam.ToString() + param.ToString() + "'")
End Sub)
SignalR - это платформа, выпущенная Microsoft.
Заранее спасибо!
1 ответ
Вам нужно использовать метод Invoke на элементе управления. Это обеспечит вызов делегата, который вы предоставляете, в главном потоке.
Это одна из причин, почему с WPF лучше работать, когда вы связываете данные и NotifyPropertyChanged
триггеры рамки исправят это для вас