WPD MTP-Stream hängt beim Festschreiben

Ich verwende den folgenden Code, um eine von einem FileInfo-Objekt umschlossene Datei mit der Windows-API für tragbare Geräte auf ein MTP-Gerät zu kopieren:

public static void CopyFileToDevice(PortableDeviceFolder parent, string name, FileInfo file)
    {
        IPortableDeviceValues values = GetRequiredPropertiesForContentType(parent.Id, name, file.Length);

        PortableDeviceApiLib.IStream tempStream;
        uint blockSize = 0;
        parent.Device.Content.CreateObjectWithPropertiesAndData(
            values,
            out tempStream,
            ref blockSize,
            null);

        System.Runtime.InteropServices.ComTypes.IStream targetStream =
            (System.Runtime.InteropServices.ComTypes.IStream)tempStream;
        try
        {
            using (var sourceStream = file.OpenRead())
            {
                var buffer = new byte[blockSize];
                int bytesRead;
                do
                {
                    bytesRead = sourceStream.Read(buffer, 0, (int)blockSize);
                    targetStream.Write(buffer, bytesRead, IntPtr.Zero);
                } while (bytesRead > 0);
            }

            targetStream.Commit(0);
        }
        finally
        {
            Marshal.ReleaseComObject(tempStream);
        }
        parent.Refresh();
    }

Now, das funktioniert ganz gut, aber beim Schreiben einer kleinen Datei, in diesem Fall einer Nur-Text-M3U-Datei von ein paar KB, wird die Zeile

targetStream.Commit(0);

ie Ausführung von @ dauert extrem lange. Beim Schreiben einer Datei mit mehreren MiB ist nichts falsch. Ich würde gerne wissen, warum dies geschieht und wie ich dies beheben könnte. Vielen Dank

Antworten auf die Frage(0)

Ihre Antwort auf die Frage