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

C# 如果可用,请使用异步方法,c#,file-io,asynchronous,windows-8,windows-runtime,C#,File Io,Asynchronous,Windows 8,Windows Runtime,是否可以根据用户是否运行Windows 8在System.IO和StorageFile方法之间切换,而无需创建两个单独的项目?我知道我可以在Windows 8中使用System.IO,但如果可能的话,我想利用内置的异步方法,即用户在Win8上 目前我没有Windows7机器可以测试,但我担心程序启动时可能会抛出丢失的库错误。有办法做到这一点吗?异步存储文件方法是.net 4.5框架的一部分。您的应用程序应该将框架作为安装的依赖项进行部署-请参阅类不是.NET 4.5的一部分,它是Windows运

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


目前我没有Windows7机器可以测试,但我担心程序启动时可能会抛出丢失的库错误。有办法做到这一点吗?

异步存储文件方法是.net 4.5框架的一部分。您的应用程序应该将框架作为安装的依赖项进行部署-请参阅类不是.NET 4.5的一部分,它是Windows运行时的一部分。此类类可以通过其根命名空间窗口轻松识别。Windows运行时API仅在Windows 8上可用,主要设计用于Windows应用商店应用程序。虽然我自己没试过,但他们也试过。不过,我不确定这对文件IO类的效果如何,因为Windows应用商店应用程序在沙盒环境中运行,并且基于其清单中声明的功能,只能有限地访问文件系统

对于桌面应用程序中的文件IO,我坚持使用System.IO命名空间中的.NET类。在.NET4.5中,也有几种异步方法可用,主要是在和类中,并且可以使用异步/等待范例从文件中读取和写入文件。它们不仅绑定到Windows 8,而且需要安装.NET 4.5


不幸的是,据我所知,在.NET 4.5中没有与StorageFile.GetBasicPropertiesAsync等效的异步方法。如果您真的需要使这些调用也是异步的,您可以始终将同步调用包装到您自己的异步方法中,您可以从UI线程调用该方法。

请重写您的问题并添加一些换行符。可能看不清楚它到底有多远。async/await是.NET 4.5的一部分,但不是,这是Win-RT。您仍然可以使用System.IO.O实现异步模式-使用System.Environment.OSVersion获得操作系统版本-并且您可以使用Hyper-V运行虚拟Windows 7-@JimO'Neil特别是,我想使用类似StorageFile.GetBasicProperties async的方法,但我猜这在非Win8设备上是不可能的?