大文件(WinRT)上的StorageFile WriteAsync操作太慢

时间:2013-06-11 15:29:07

标签: windows-runtime winrt-async

我发现了StorageFile WriteAsync操作的奇怪行为。当我创建大文件(大约4gb)然后尝试在此文件的末尾写入时,写入异步操作需要很长时间。看起来它填补了开始和写入位置之间的差距。无论如何,Process Manager显示磁盘使用率很高。是WinRT问题还是我做错了什么?怎么解决?

    const long FILE_SIZE = 4294967296;
    var folderPicker = new FolderPicker();
    folderPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
    folderPicker.FileTypeFilter.Add("*");
    var folder = await folderPicker.PickSingleFolderAsync();

    var file = await folder.CreateFileAsync("1.iso", CreationCollisionOption.ReplaceExisting);
    using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
    {
        stream.Size = FILE_SIZE; // size 4 Gb

        var buffer = new byte[1]; // create one byte buffer
        buffer[0] = 0xFF;

        stream.Seek(FILE_SIZE - 10); // seek almost at the and position
        await stream.WriteAsync(buffer.AsBuffer()).AsTask(); // write operation takes a lot of time

        await stream.FlushAsync();
    }

0 个答案:

没有答案
相关问题