0
私のアプリケーションに問題があります。 FTPサーバーに画像を送信しようとしています。私はサーバーに接続し、認証し、そして他の人に接続することができます。しかし、私がファイルを送信しようとすると、ファイルが大きい(通常40-50kbより大きい)場合、私はSystem.ObjectDisposedExceptionを取得します。System.ObjectDisposedException UWP
これは私が送信するために使用したコードです:
public async Task <byte[]> GetResultingBuffer(IRandomAccessStreamWithContentType readStream, IBuffer buffer)
{
var resultingBuffer = new byte[0];
while (true)
{
IBuffer readBuffer = await readStream.ReadAsync(buffer, 1024, InputStreamOptions.Partial);
if (readBuffer.Length == 0) break;
resultingBuffer = resultingBuffer.Concat(readBuffer.ToArray()).ToArray();
}
return resultingBuffer;
}
public async Task UploadFileAsync(StorageFile file, string destination)
{
using (var stream = await OpenWriteAsync(destination))
{
//
// A more efficient way, maybe a DataReader can be used here
using (var readStream = await file.OpenReadAsync())
{
var buffer = new byte[1024].AsBuffer();
var resultingBuffer = new byte[0];
resultingBuffer = await GetResultingBuffer(readStream, buffer);
await stream.WriteAsync(resultingBuffer.AsBuffer());
await stream.FlushAsync();
}
}
}
私はGetResultingBufferは、タスクが、UploadFileAsnc内部サイクルではなかった編集する前に、それを編集してみました。どのように私はバッファを処分することを防ぐことができますか?別の解決策がありますか?ありがとう!
コードのどの行でエラーを手に入れたでそれを解決しましたか? –
While in while(true).. Thinkはメモリ不足エラーです。私は下の私の答えでそれを解決した –