Вы не можете получить доступ к элементам пользовательского интерфейса из потока, который не является потоком, в котором были созданы элементы пользовательского интерфейса.Чтобы преодолеть это, вам нужно будет вызвать то, что вам нужно, в потоке Dispatcher
, в котором были созданы элементы пользовательского интерфейса.
Предполагая, что clientobj
сам по себе является элементом пользовательского интерфейса (например,как Window
или UserControl
), то вы можете использовать следующий код:
public void Update (string msg)
{
// See if we need to re-invoke on the Dispatcher thread
if (!CheckAccess())
{
// Invoke on the Dispatcher thread
this.Dispatcher.BeginInvoke(new Action<string>(Update), msg);
// Exit from this method to prevent continued execution
return;
}
// We are now running on the Dispatcher thread, so we can access the UI element(s) directly
label1.Text = msg;
}