Windows 8 是否需要在Windows 8应用程序中调用CachedFileManager.Updates

Windows 8 是否需要在Windows 8应用程序中调用CachedFileManager.Updates,windows-8,async-await,storagefile,Windows 8,Async Await,Storagefile,在文件选择器Windows 8示例中,文件保存方式如下: CachedFileManager.DeferUpdates(file); await FileIO.WriteTextAsync(file, stringContent); FileUpdateStatus status = await CachedFileManager.CompleteUpdatesAsync(file); 我将对象序列化为XML,因此执行方式略有不同: // CachedFileManager.DeferUpda

在文件选择器Windows 8示例中,文件保存方式如下:

CachedFileManager.DeferUpdates(file);
await FileIO.WriteTextAsync(file, stringContent);
FileUpdateStatus status = await CachedFileManager.CompleteUpdatesAsync(file);
我将对象序列化为XML,因此执行方式略有不同:

// CachedFileManager.DeferUpdates(file);
var ras = await file.OpenAsync(FileAccessMode.ReadWrite);
var outStream = ras.GetOutputStreamAt(0);
var serializer = new XMLSerializer();
serializer.Write(myObject, outStream);
// FileUpdateStatus status = await CachedFileManager.CompleteUpdatesAsync(file);
它可以与CachedFileManager一起工作,也可以不与CachedFileManager一起工作(上面已注释掉)

因此,我应该包括CachedFileManager吗?如果我确实使用它,我是否以正确的方式保存文件


此代码可以正常工作并保存文件,但我不喜欢包含我不理解的代码。

是的,此代码在没有CachedFileManager的情况下也可以工作。但是,使用CachedFileManager时,会通知文件提供程序该文件正在更改中。如果您的文件位于SkyDrive上,则可以更快地创建文件并立即上载,而不是多次更新。

是的,此代码在没有CachedFileManager的情况下工作。但是,使用CachedFileManager时,会通知文件提供程序该文件正在更改中。如果您的文件位于SkyDrive上,则可以更快地创建文件并立即上载,而不是多次更新。

您可以在那里了解完整情况:


它只告诉“存储库”应用程序上载文件。

您可以在那里了解完整情况:


它只是告诉“存储库”应用程序上载文件。

应该有一个using(var outStream=…)部分,还是流不需要关闭?是的,在其中有using语句。这是使用流并正确释放流的正确模式。根据Andrei的评论,无论何时从文件选择器获取存储文件,您都确实希望使用CachedFileManager调用,因为它可能来自在线来源。如果您知道正在写入本地文件系统上的文件,例如appdata文件夹中的某个文件,则不必执行此操作。是否应该有using(var outStream=…)部分,或者不需要关闭流?是的,在其中包含using语句。这是使用流并正确释放流的正确模式。根据Andrei的评论,无论何时从文件选择器获取存储文件,您都确实希望使用CachedFileManager调用,因为它可能来自在线来源。如果您知道正在写入本地文件系统上的文件,例如appdata文件夹中的某个文件,则不需要这样做。