2013-07-18 39 views
2

如果可能,我有興趣在PCL內核中實現跨平臺filesystemwatcher。你在mvvmcross的背景下推薦什麼樣的一般方法?我首先想到的是通過文件的插件來獲得不同的設備文件系統,然後設置一個while循環,但它聽起來痛苦低效:用mvvmcross實現跨平臺filesystemwatcher

while (!File.Exist) 
{ 
    Thread.sleep(1000); 
} 
//do stuff 

感謝 馬克

回答

0

根據您定位的平臺,某些平臺支持文件觀察器 - 例如, Android有一個FileObserver類(例如,請參閱Using android.os.FileObserver to watch "\data" directory not working

在沒有本機文件系統監視器的平臺上,我想某種定時檢查是最好的。一般來說,我會推薦使用某種Timer而不是Thread.Sleep - 主要是因爲Timer通常更具內存效率,但也因爲Thread.Sleep在PCL中不可用。

對於像iOS和WP這樣的平臺,它可以爲每個應用程序提供沙盒文件系統訪問權限,那麼我懷疑實際實現文件系統監視器是沒有必要的 - 因爲您的應用程序是唯一可以讀取或寫入應用程序文件的應用程序系統,那麼當文件系統內容改變時,你應該有一個更簡單的方法來解決。

0

常見的誤概念與文件。存在的是,它檢查文件是否存在....

它實際檢查的是,該文件是否可訪問您。因此,如果文件在共享上,而您沒有正確的權限,則可能會返回false。

我想這可能會因平臺而異,所以要小心。

+0

感謝您的警告! – MarkAArnold