保存到下载文件夹,DataWriter.FlushAsync挂起90秒

时间:2012-05-17 09:50:55

标签: c# file-io windows-8 windows-runtime

代码:

private async Task<int> Save()
{
    StorageFile file = await DownloadsFolder.CreateFileAsync("a.exe");
    IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite);
    DataWriter writer = new DataWriter(stream);
    byte[] buffer = new byte[4096];
    writer.WriteBytes(buffer);
    await writer.StoreAsync();
    await writer.FlushAsync();    //Hang for a long time
    writer.Dispose();
    return 1001;  //eventually it can get to this line, no exception is thrown
}

修改

在Win8 CP build 8250上发现,升级到构建8375之后,问题就消失了。所以我猜这是一个已经在winrt或win8中修复过的bug。

1 个答案:

答案 0 :(得分:1)

你可以尝试更像这样的东西:

using (var fs = await file.OpenAsync(FileAccessMode.ReadWrite))
{
    using (var outStream = fs.GetOutputStreamAt(0))
    {
        using (var dataWriter = new DataWriter(outStream))
        {
            byte[] buffer = new byte[4096];
            dataWriter.WriteBytes(buffer)
            await dataWriter.StoreAsync();
            dataWriter.DetachStream();
        }

        await outStream.FlushAsync();
    }
}