当我的tcpListener解析响应时,如何通知UserControl



我正在使用C#和wpf构建一个基本的TCP客户端/服务器应用程序。当客户端解析来自服务器的响应时,我试图通知用户控件(在我的情况下是一个按钮)。

据我所知,我必须在我的TcpClient类中创建一个事件,该事件将在解析响应时激发,并且我必须为该事件订阅按钮并使用Dispatcher。调用()。但我对如何实现它没有任何线索,MSDN文档也没有帮助我。我使用了下面的MSDN示例,用于服务器和客户端";PoC";它:https://learn.microsoft.com/en-us/dotnet/framework/network-programming/asynchronous-client-socket-example

https://learn.microsoft.com/en-us/dotnet/framework/network-programming/asynchronous-server-socket-example

在我的主窗口上,我有一个按钮";test_btn";。我想将按钮的内容更新为";成功;当我解析来自服务器的响应时。

任何帮助都将不胜感激,

谢谢。

主窗口.cs:

public MainWindow()
{
InitializeComponent();
Thread TcpThread = new Thread(new ThreadStart(AsynchronousClient.StartClient));
TcpThread.Start();
}

异步客户端.cs:

Receive(client);
receiveDone.WaitOne();
// Write the response to the console.  
Console.WriteLine("Response received : {0}", response);
if(response == "success)
{
// Update the button from the MainWindow
}

我自己来回答。

如果它能帮助某人:

我在主窗口.cs:中添加了

public delegate void updateNetworkButtonDelegate(string message);
public void updateNetworkButton(string message)
{
if (!test_btn.Dispatcher.CheckAccess())
{
test_btn.Dispatcher.Invoke(new updateNetworkButtonDelegate(updateNetworkButton), message);
}
else
{
test_btn.Content = message;
}
}

}

我已经修改了我的TcpClient以传递参数:中的MainWindow

public static void StartClient(MainWindow mw)

然后我可以用更新我的按钮

mw.updateNetworkButton(响应);

相关内容

  • 没有找到相关文章

最新更新