2013-04-22 4 views
2

У меня проблема с кросс-потоковыми операциями.C# Работа с перекрестными потоками недействительна после вызова

У меня есть следующий метод

private void UpdateLabel(string text) 
    { 
     if (this.richTextRxMessage.InvokeRequired) 
     { 
      this.Invoke(new Action(() => this.UpdateLabel(text))); 
      return; 
     } 
     else 
     { 
      this.richTextRxMessage.AppendText(text); 
     } 
    } 

и я называю это

UpdateLabel(richTextRxMessage.Text + szData); 

Я не понимаю, почему я все еще получаю это исключение

+1

Вы также не можете получить доступ к свойству Текст в вызове. Сделайте его UpdateLabel (szData) и используйте UpdateLabel свойство Text. –

ответ

2

Define делегат как

public delegate void UpdateFormText(string text); 

и измените свой метод, как

private void UpdateLabel(string text) 
{ 
    if (!this.richTextRxMessage.InvokeRequired) 
    { 
     this.richTextRxMessage.Text=text; 

    } 
    else 
    { 
     var s = new UpdateFormText(UpdateLabel); 
     Invoke(s, new object[] { text}); 
    } 
} 
Смежные вопросы