gpt4 book ai didi

c# - 使用 BackgroundWorker 从客户端获取消息

转载 作者:太空宇宙 更新时间:2023-11-03 21:42:14 26 4
gpt4 key购买 nike

我有一个需要从客户端接收消息的客户端-服务器应用程序。这是开始监听服务器的代码:

    private void startListening(TcpListener lisener)
{
BackgroundWorker backgroundWorker = new BackgroundWorker();
backgroundWorker.WorkerReportsProgress = true;
backgroundWorker.DoWork += backgroundWorker_DoWork;
backgroundWorker.ProgressChanged += backgroundWorker_ProgressChanged;
backgroundWorker.RunWorkerCompleted += backgroundWorker_RunWorkerCompleted;
backgroundWorker.RunWorkerAsync();
}

private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
string message = string.Empty;
_socket = _lisener.AcceptSocket();
connectionAcceptedEvent("Connection accepted from " + _socket.RemoteEndPoint);
byte[] b = new byte[100];
int k = _socket.Receive(b);
for (int i = 0; i < k; i++)
{
message += Convert.ToChar(b[i]); // Message from client
}
}

这是服务器完成接收来自客户端的所有消息时的事件。此时,我需要获取消息字符串:

private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{

}

最佳答案

使用每个事件处理程序的参数的 Result 属性来执行此操作:

private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
//...
e.Result = message;
}

private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
string message = e.Result as string;
//...
}

附带说明,将每个新字符连接到 message,一次一个,是一个非常糟糕的主意。您应该在那里使用 StringBuilder 来附加字符,而不是每次都创建一个全新的中间字符串。

关于c# - 使用 BackgroundWorker 从客户端获取消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18767492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com