我在擺弄Silverlight的TCP通信,我不得不使用System.Net.Sockets.Socket類,它在Silverlight運行時只有異步方法。Socket.SendAsync線程是否安全有效?
我想知道如果兩個線程在很短的時間內從另一個線程調用Socket實例上的SendAsync會發生什麼?
我唯一的擔心是沒有混合字節通過TCP通道。
作爲一個異步方法我想消息被放置在一個隊列中,單個線程從中出隊,所以不會發生這種情況(消息在線路上的混合內容)。
但我不確定,MSDN也沒有說明方法描述中的任何內容。有沒有人肯定這個?
EDIT1:沒有,調用SendAsync如之前鎖定的對象上:
lock(this._syncObj)
{
this._socket.SendAsync(arguments);
}
不會幫助,因爲這串行發送數據沒有實際發送的數據的請求。