将图像从Socket传递到UI线程

时间:2015-11-12 22:45:59

标签: c# wpf multithreading sockets tcp

这似乎相当微不足道,我在网上看到了一些类似的问题,但无论如何我无法让它继续工作。 我有一个C#线程,等待传入的TCP客户端然后通过TCP读取图像。所有这一切都很好,但我无法获得显示图像的线程。

这就是我所拥有的。 在UI线程中:

public partial class ReadImagePage : Page {
    //...
    listener = new TcpListener(IPAddress.Any, 11114);
    listenThread = new Thread(() => AsyncAccept(this, listener));
    listenThread.Start();
    //...
}

在AsyncAccept中:

private void AsyncAccept(ReadPassportPage readPassportPage, TcpListener listener)
{
    listener.Start();
    TcpClient client = listener.AcceptTcpClient();
    var image = new BitmapImage();
    // read bitmap from tcp...
}

我现在想在WPF页面中将图像设置为图像。我尝试了多种变体。甚至将页面对象传递给线程。但是我一直收到InvalidOperationException异常,因为不允许Thread访问UI元素。

Application.Current.Dispatcher.BeginInvoke(new Action(delegate() {
     signatureImage.Source = image;
}));

我怎样才能让它发挥作用?任何帮助是极大的赞赏。提前谢谢。

0 个答案:

没有答案