1

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);
}
4

2 に答える 2

1

前の非同期書き込みが完了するまで待つ必要があります。

を返すように send メソッドを変更します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);
}
于 2012-10-14T23:00:11.820 に答える