【发布时间】:2010-08-02 09:12:57
【问题描述】:
它在MSDN documentation 中声明:
至少,您的状态参数必须包含用于通信的已连接或默认 Socket。由于您希望在回调方法中获取接收到的数据,因此您应该创建一个小类或结构来保存读取缓冲区以及任何其他有用的信息。通过 state 参数将结构体或类实例传递给 BeginReceive 方法。
但是我调用 BeginRecieve 并将一个实例方法作为我的 AsyncCallback 传递:
class MyClass
{
private Socket mysocket;
private void callback(IAsyncResult Result)
{
Record record = this.mysocket.EndReadRecord(Result);
// Do things
this.mysocket.BeginReadRecord(new AsyncCallback(callback), null);
}
// Other methods
}
假设mysocket 只设置一次(在构造函数期间),是否需要将我的套接字作为状态参数的一部分传递,或者使用实例字段mysocket 是否安全?
【问题讨论】:
标签: c# sockets asynchronous