0

HTTP から取得したストリームがあります。

受信した各パケットを保存し、ファイルの最後に追加したいと思います: "myData.dat"

以下のコードを書きましたが、パケットが到着するたびに実行されます。

private async void FrameReady( object sender, IBuffer DataBuffer )
{
    InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream();
    await stream.WriteAsync( DataBuffer );
    stream.Seek( 0 );
    using ( Stream file = await ApplicationData.Current.LocalFolder.OpenStreamForWriteAsync( "myData.dat", CreationCollisionOption.OpenIfExists ) )
    {
        file.Seek( 0, SeekOrigin.End );
        var dataReader = new Windows.Storage.Streams.DataReader( stream );
        byte [] buffer = new byte [DataBuffer.Length];
        dataReader.ReadBytes( buffer );
        await file.WriteAsync( buffer, 0, (int)DataBuffer.Length );
    }
}

ただし、コードを実行すると、次の行で失敗します。

dataReader.ReadBytes( buffer );

エラーメッセージは次のとおりです。

操作が有効な範囲外のデータにアクセスしようとしました (HRESULT からの例外: 0x8000000B)

なぜだかわかりませんか?何か案が?

4

1 に答える 1