2012-10-14 29 views
1

我面臨的一個惱人的問題與SslStream.WriteAsyncC#中使用SslStream.WriteAsync高速

這裏是代碼

public void Send(PacketWriter writer) 
{ 
    var buffer = writer.GetWorkspace(); 

    _sslStream.WriteAsync(buffer, 0, buffer.Length); 
} 

當以極高的速度寫入數據,它告訴我

The beginwrite method cannot be called when another write operation is pending

[注]:我的意思是高速這樣的事情

for (var i = 0 ; i <= 1000; i++) 
{ 
    Send(somedata); 
} 

回答

1

您必須等到上一次異步寫入完成。

更改您的發送方法返回一個Task

public Task Send(PacketWriter writer) 
{ 
    var buffer = writer.GetWorkspace(); 
    return _sslStream.WriteAsync(buffer, 0, buffer.Length); 
} 

讓調用方法async,然後等待,直到每個發送操作完成:

for (var i = 0 ; i <= 1000; i++) 
{ 
    await Send(somedata); 
} 
+0

我試過,但還是一樣的結果 –

+0

你知道爲什麼 ? –