110,534
社区成员
发帖
与我相关
我的任务
分享
socket.BeginSend(array, 0, array.Length, SocketFlags.None, ar=>{
Socket senSocket = socket;
var len= senSocket.EndSend(ar);
if(len!= array.Length)
.........................
}, socket);
这样的匿名委托,在委托方法中可以直接访问 array 和 socket,省得你再去动脑筋去按照你那种方式设计相关代码了。private void SendCallBack(IAsyncResult ar)
{
MyState state = (MyState)ar.AsyncState;
state.offset += state.socket.EndSend(ar); // 这里更正上贴的错误
if(state.offset < state.array.Length)
{
state.socket.BeginSend(
state.array, state.offset, state.array.Length - state.offset,
SocketFlags.None, SendCallBack, state);
}
}
private void SendCallBack(IAsyncResult ar)
{
MyState state = (MyState)ar.AsyncState;
var len= state.socket.EndSend(ar);
if(len + state.offset < state.array.Length)
{
socket.BeginSend(state.array, state.offset, state.array.Length - state.offset, ...);
}
}