2012-12-08 22 views
0

根據用戶是否運行Windows 8而不必創建兩個單獨的項目,是否可以在System.IO和StorageFile方法之間切換?我知道我可以在Windows 8中使用System.IO,但是如果可能的話,我想利用內置的異步方法(即用戶在Win8上)。使用異步方法(如果可用)

我目前還沒有Windows 7機器測試,但我擔心程序啓動時可能會丟失缺少的庫錯誤。有沒有辦法做到這一點?

+0

請重寫您的問題並添加一些換行符。 – rekire

+0

也許看看https://github.com/UbiqRT/Storage不知道它有多遠。 –

回答

1

StorageFile類不是.NET 4.5的一部分,它是Windows運行時的一部分。這些類可以很容易地被它們的根名稱空間Windows識別。 Windows Runtime API僅在Windows 8上可用,主要用於Windows Store apps。雖然我自己也沒有嘗試過,但他們也是can be used in desktop applications。儘管Windows商店應用程序在沙盒環境中運行,並且基於其清單中聲明的​​功能對文件系統的訪問權限有限,但我仍然不確定它對於文件IO類有多好。

對於桌面應用程序中的文件IO,我會堅持使用System.IO名稱空間中的.NET類。在.NET 4.5中,還有幾種異步方法可用,主要在Stream,StreamReaderStreamWriter類中,並且可用於使用async/await範例讀取和寫入文件。它們不僅僅限於Windows 8,但它們確實需要安裝.NET 4.5,其中的內容爲excludes Windows XP

不幸的是,在我所知的.NET 4.5中,沒有異步方法等價於StorageFile.GetBasicPropertiesAsync。如果您確實需要將這些調用設置爲異步,則始終可以將同步調用包裝爲您可以從UI線程調用的自己的異步方法。

1

async StorageFile方法是.net 4.5框架的一部分。您的應用程序應該將該框架部署爲依賴於安裝 - 請參閱.NET Framework Deployment Guide for Developers

+1

async/await是.NET 4.5的一部分,但[StorageFile](http://msdn.microsoft.com/en-us/library/windows/apps/br227171.aspx)不是,它是Win RT。您仍然可以使用System.IO實現異步模式。 –

+0

也可以使用System.Environment.OSVersion來獲取操作系統版本 - 並且您可以使用Hyper-V運行虛擬Windows 7 - http://technet.microsoft.com/zh-cn/library/hh857623.aspx – viperguynaz

+0

@ JimO'Neil特別是,我想使用像StorageFile.GetBasicPropertiesAsync這樣的方法,但我想這在非Win8設備上不可行? – superwpf