gpt4 book ai didi

c# - 将参数传递给 AsyncCallback 函数?

转载 作者:可可西里 更新时间:2023-11-01 09:05:32 28 4
gpt4 key购买 nike

我正在学习套接字编程,我有以下功能:

public void OnDataReceived(IAsyncResult asyn)

回调是这样设置的:

pfnWorkerCallBack = new AsyncCallback(OnDataReceived);

问题是我需要将另一个参数传递给 OnDataReceived 回调函数,我该怎么做?我正在尝试制作一个简单的 tcp 服务器,我需要跟踪数据来自哪个客户端。有小费吗?谢谢!

最佳答案

我假设您在这里使用 System.Net.Sockets.Socket。如果您查看 BeginReceive 的重载您会看到 object 参数(命名状态)。您可以传递一个任意值作为此参数,它将流向您的 AsyncCallback 回调。然后,您可以使用传递到回调中的 IAsyncResult 对象的 AsyncState 属性来访问它。例如;

public void SomeMethod() {
int myImportantVariable = 5;
System.Net.Sockets.Socket s;
s.BeginReceive(buffer, offset, size, SocketFlags.None, new new AsyncCallback(OnDataReceived), myImportantVariable);
}

private void OnDataReceived(IAsyncResult result) {
Console.WriteLine("My Important Variable was: {0}", result.AsyncState); // Prints 5
}

关于c# - 将参数传递给 AsyncCallback 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9192564/

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