我用Silverlight的TCP通信摆弄,我被迫要使用的,在Silverlight运行时仅具有异步方法的System.Net.Sockets.Socket类。

我在想,如果两个线程在很短的时间内从另一个调用SendAsync在Socket实例会发生什么?

我的单担心是没有混合字节通过TCP信道去。

作为一个异步方法的我想邮件获取放置在队列中从其中一个线程出队所以没有这样的事情将会发生(掺混电线上的消息的内容)。

不过,我不知道和MSDN并不说明该方法的描述事情。就是这个人的确定

EDIT1:否,在调用之前锁定的对象上SendAsync如:

lock(this._syncObj)
{
    this._socket.SendAsync(arguments);
}

不会帮助,因为这串行发送数据的请求没有实际发送的数据。

有帮助吗?

解决方案

为了调用SendAsync你首先需要有人称与ConnectAsync的实例SocketAsyncEventArgs。其SocketAsyncEventArgs的实例,它代表了客户端和服务器之间的连接。调用SendAsync与刚刚被用于一个优秀的呼叫SocketAsyncEventArgs会导致异常SendAsync的同一个实例。

有可能使使用SendAsync的不同实例的相同Socket对象的SocketAsyncEventArgs多个未完成呼叫,但只。例如(在一个平行的宇宙,这可能是necessay),你可以让多个HTTP职位,在同一时间在同一台服务器上,但不同的连接。这是完全可以接受的和正常的没有任何客户端服务器将弄不清楚哪个分组是哪个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top