2014-11-30 1 views
0

У меня есть проблема, связанная следующий фрагмент кода (C#):Как вызывать GUI нить в VB.NET из SignalR Hub

stockTickerHub.On("notify",() => 
Context.Post(delegate 
{ 
    mainForm.textBox1.Text += "Notified!\n"; 
}, null) 
); 

Приведенный выше код работает в асинхронном Sub в модуле VB.NET. Мне не разрешен доступ к Text-Property 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.

Заранее благодарен!

+0

Почему это работает в модуле? Может ли он работать с основной формой? – OneFineDay

+0

К сожалению, несколько форм должны иметь к нему доступ. – Flash1232

ответ

0

Вам нужно использовать метод Invoke для элемента управления. Он будет следить за тем, чтобы предоставленный вами делегат вызывается в основном потоке.

Это одна из причин, почему WPF приятнее работать, когда вы данные связываются и NotifyPropertyChanged триггерами рамка зафиксирует, что для вас