如何在UWP项目中监视文件更改?

8
我正在将我的游戏从完整的桌面.net移植到UWP,其中一个问题是如何将纹理、着色器等实时加载到游戏的UWP版本中。
在桌面版本中,我使用FileSystemWatcher来实现这一点,但是FileSystemWatcher在UWP中不存在,即使对于我完全控制的目录也是如此。
在UWP中是否有相应的替代品?
如何在UWP的有限API集中实现最佳方式?
1个回答

12

UWP 有相应的等价物吗?

您可以订阅查询的存储文件的 ContentChanged 事件

例如:

List<string> fileTypeFilter = new List<string>();
fileTypeFilter.Add(".txt");
fileTypeFilter.Add(".png");
var options = new Windows.Storage.Search.QueryOptions(Windows.Storage.Search.CommonFileQuery.OrderByName, fileTypeFilter);
var query = ApplicationData.Current.LocalFolder.CreateFileQueryWithOptions(options);
//subscribe on query's ContentsChanged event
query.ContentsChanged += Query_ContentsChanged;
var files = await query.GetFilesAsync();

private void Query_ContentsChanged(Windows.Storage.Search.IStorageQueryResultBase sender, object args)
{
    //TODO:
}

这将在应用程序的本地文件夹中搜索并返回所有的 .txt 和 .png 文件,如果查询中的文件被添加、删除或修改,那么就会触发此事件。


仅支持清单中声明的文件类型,还是支持任何文件类型? - Soumya Mahunt
@SoumyaMahunt 我认为你可以尝试使用“*”来匹配所有文件类型。 - Grace Feng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接