2

如果可能,我有兴趣在 PCL 核心中实现跨平台文件系统观察器。在 mvvmcross 的上下文中,您推荐什么通用方法?我的第一个想法是通过文件插件获取不同的设备文件系统,然后设置一个while循环,但这听起来非常低效:

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

谢谢马克

4

2 回答 2

0

File.Exists 的一个常见错误概念是它检查文件是否存在......

它实际检查的是您可以访问的文件。因此,如果文件在共享上并且您没有正确的权限,它可能会返回 false。

我想这可能因平台而异,所以要小心。

于 2013-07-18T16:49:00.700 回答
0

根据您所针对的平台,某些平台确实支持文件观察器 - 例如 Android 有一个FileObserver类(例如,请参阅Using android.os.FileObserver to watch "\data" directory not working

在没有本机文件系统观察程序的平台上,我想某种定时检查是你能做的最好的。一般来说,我建议使用某种Timer而不是Thread.Sleep- 主要是因为Timer通常内存效率更高,但也因为Thread.Sleep在 PCL 中不可用。

对于像 iOS 和 WP 这样的平台,它们对每个应用程序的文件系统访问进行沙箱化,那么我怀疑实际上不需要实现文件系统观察程序 - 因为您的应用程序是唯一可以读取或写入应用程序文件系统的应用程序,那么您当文件系统内容发生变化时,应该有一种更简单的方法来解决。

于 2013-07-18T17:53:49.563 回答