Ich habe ein Problem in meiner Anwendung. Ich versuche ein Bild in den FTP-Server zu senden. Ich kann mich mit dem Server verbinden, authentifizieren und andere. Aber wenn ich versuche, Datei zu senden, wenn die Datei groß ist (normalerweise größer als 40-50kb), habe ich System.ObjectDisposedException.System.ObjectDisposedException UWP
Dies ist der Code, den ich senden verwenden:
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();
}
}
}
ich es zu bearbeiten versucht, bevor GetResultingBuffer Bearbeitung keine Aufgabe, sondern ein Zyklus innerhalb UploadFileAsnc. Wie kann ich verhindern, den Puffer zu entsorgen? Gibt es eine andere Lösung? Vielen Dank!
In welcher Zeile von Codes haben Sie den Fehler? –
Im Zyklus in While (true) .. Think ist ein Speicherexzeptionsfehler. Ich habe es in meiner Antwort unten gelöst –