У меня проблема в моем приложении. Я пытаюсь отправить изображение на FTP-сервер. Я могу подключиться к серверу, проверить подлинность и другие. Но когда я пытаюсь отправить файл, если файл большой (обычно больше 40-50 КБ), я получил 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 (правда) .. Подумайте, это ошибка экспрессии памяти. Я решил это в моем ответе ниже –