如果可用,请使用异步方法

时间:2012-12-08 17:58:38

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

是否可以在System.IO和StorageFile方法之间切换,具体取决于用户是否运行Windows 8,而无需创建两个单独的项目?我知道我可以在Windows 8中使用System.IO,但是我想利用内置的异步方法,如果可能的话(即用户在Win8上)。

我目前没有Windows 7机器可供测试,但我担心程序启动时可能会丢失库错误。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

异步StorageFile方法是.net 4.5 Framework的一部分。您的应用应该将框架部署为安装依赖项 - 请参阅.NET Framework Deployment Guide for Developers

答案 1 :(得分:1)

StorageFile类不是.NET 4.5的一部分,它是Windows运行时的一部分。这些类可以通过它们的根命名空间Windows轻松识别。 Windows运行时API仅在Windows 8上可用,主要用于Windows Store apps。虽然我自己也没有尝试过can be used in desktop applications。我仍然不确定文件IO类有多好,因为Windows商店应用程序在沙盒环境中运行,并且基于其清单中声明的​​功能,只能有限地访问文件系统。

对于桌面应用程序中的文件IO,我会坚持使用System.IO命名空间中的.NET类。在.NET 4.5中,也有几种异步方法可用,主要在StreamStreamReaderStreamWriter类中,可用于使用async / await范例读取和写入文件。它们不仅仅绑定到Windows 8,但它们确实需要安装.NET 4.5 excludes Windows XP

不幸的是,我所知道的.NET 4.5中没有等同于StorageFile.GetBasicPropertiesAsync的异步方法。如果您确实需要将这些调用设置为异步,则可以始终将同步调用包装到您可以从UI线程调用的异步方法中。