异步客户端套接字 c#。我如何在不阻塞程序运行的情况下循环等待来自服务器的信息?

Asynchronous client socket c#. How can i wait in loop for informations from the server without blocking the operation of the program?

我创建了 class 来像这样与 TCP 服务器通信:

public class Tcp_client_server_communication
{
    private static TcpClient client;
    private static String response = String.Empty;

    public void Initialize(string ip, int port)
    {
        client = new TcpClient(ip, port);

    }
    public string BeginRead()
    {
        var buffer = new byte[16];
        var ns = client.GetStream();
        ns.BeginRead(buffer, 0, buffer.Length, EndRead, buffer);
     
    }

    public void EndRead(IAsyncResult result)
    {
        var buffer = (byte[])result.AsyncState;
        var ns = client.GetStream();
        var bytesAvalible = ns.EndRead(result);

        MessageBox.Show(Encoding.ASCII.GetString(buffer));
        BeginRead();

    }
}

调用这些方法我使用:

.Initialize();
.BeginRead();

它工作正常,但我想以多行 TextBox 而非 MessageBox.

的形式显示来自服务器的每条消息

我该怎么做?

好吧,您可以创建一个 List 对象来保存所有传递的消息,然后设置一个 Timer 以经常检查列表是否已添加到。将消息添加到文本框后,从列表中删除您每次阅读的内容。

这个项目比那个复杂一点,但这里以我在中学时从事的一个旧项目为例:https://github.com/Taloreal/Server-Essentials