如何查看 UWP 项目中的文件更改?

How can I watch for file changes in a UWP project?

我正在将我的游戏从完整的桌面 .net 移植到 UWP,我需要解决的一件事是如何将纹理、着色器等实时加载到游戏的 UWP 版本中。

在桌面版本中,我使用 FileSystemWatcher 来执行此操作,但 FileSystemWatcher 在 UWP 中不存在,即使在我完全控制的目录中也是如此。

是否有 UWP 的等效项?

在 UWP 中使用有限的 API 集来实现这一点的最佳方法是什么?

Is there an equivalent for UWP?

您可以为查询到的存储文件订阅ContentChanged event

例如:

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:
}

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