关于异步TCP发送文件的问题请教
//先發送文件名到服務器端
SendToServerDelegate d = new SendToServerDelegate(SendToServer);
IAsyncResult iarName = d.BeginInvoke(byteBuffer,byteBuffer.Length, null, null);
while (true)
{
if (iarName.IsCompleted)
{
break;
}
else
{
Thread.Sleep(300);
}
}
上面的代码是向服务器端异步发送一个文件件 我没有搞懂既然用异步为什么要用下面的while 等待异步完成? 这样做和同步有什么区别吗?
还有一个问题; SendState sendState = new SendState(); //这是一个结构体 上面存放了调用委托的变量SendToServerDelegate 和IAsyncResult 结果
sendState.d = d;
sendState.rulst = iarName;
Thread threadSend = new Thread(new ParameterizedThreadStart(EndSendToServer));
threadSend.Start(sendState);
private void EndSendToServer(object SendStruct)
{
SendState s = (SendState)SendStruct;
s.d.EndInvoke(s.rulst);
}
这段代码是紧接着上面那段代码的 为什么要在一个线程中调用 EndInvoke方法 我把 EndInvoke方法直接提到上面的while 后面 在服务器端就接收不到文件名 我有点晕了? 请大家帮我讲讲这个吧 关于异步的原理及流程 谢谢。