|
楼主发表于:2008-02-24 10:36:56
小弟在做一个类似于msn的聊天程序,用的是udp 协议,后台有一个监听线程, private void sockUDP1_DataArrival(byte[] Data, System.Net.IPAddress Ip, int Port) { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal , new DataArrivaldelegate(DataArrival), Data, Ip, Port); } 用来接收其他客户端发送的指令,例如是发送文件还是传递消息,或者是有其他用户登录. 当发送文件时,我用 Dispatcher.Invoke(DispatcherPriority.Normal, new SendFileData(sendFileData), fStream);来启用一个发送文件的新线程. 为了保证发送文件可以被接受者正确地收到,我每次发送一定字节数后,就会等待接受者返回消息,这个是由前面的sockUDP1_DataArrival进程收到并处理的, 现在问题是,文件发送线程sendfileData中,我用 while(currSendPos <this.FileSize && !userCancelSend) { if(currSendPos==this.pSendPos) //pSendPos就是等待接受者发送的消息中所更新目前他的接受状态. ..... } 等待接受者发送的消息,然而接受者发送的消息一直没有收到,所以一直死在while循环中. 但实际情况是,接受者已经发送消息,而这些消息却没有被DataArrival处理反而一直等待while结束时才被处理. 请问我该如何解决该问题? |
|
|
|