use*_*403 10 c# arguments function asynccallback
我正在学习socket编程,我有以下功能:
public void OnDataReceived(IAsyncResult asyn)
Run Code Online (Sandbox Code Playgroud)
这就是回调设置的方式:
pfnWorkerCallBack = new AsyncCallback(OnDataReceived);
Run Code Online (Sandbox Code Playgroud)
问题是我需要将另一个参数传递给OnDataReceived回调函数,我该怎么做?我正在尝试创建一个简单的tcp服务器,我需要跟踪数据来自哪个客户端.有小费吗?谢谢!
我打算假设你在System.Net.Sockets.Socket这里使用.如果你看一下BeginReceive的重载,你会看到object参数(命名状态).您可以传递任意值作为此参数,它将流向您的AsyncCallback回调.然后,您可以使用传递给回调AsyncState的IAsyncResult对象的属性来访问它.例如;
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
}
Run Code Online (Sandbox Code Playgroud)