Can';“不要创造可靠的”;“监视文件夹”;在UWP应用程序中
我正在尝试获取一个适用于Windows 10应用商店应用程序的手表文件夹。调试时,上述代码一开始工作正常。每当我使用Windows文件资源管理器将文件添加到监视文件夹(或删除)时,该事件将激发并将继续激发。但如果我与应用程序的UI交互几秒钟,然后再试一次,之后它就不会启动了Can';“不要创造可靠的”;“监视文件夹”;在UWP应用程序中,uwp,c#,Uwp,C#,我正在尝试获取一个适用于Windows 10应用商店应用程序的手表文件夹。调试时,上述代码一开始工作正常。每当我使用Windows文件资源管理器将文件添加到监视文件夹(或删除)时,该事件将激发并将继续激发。但如果我与应用程序的UI交互几秒钟,然后再试一次,之后它就不会启动了 我尝试在代码隐藏和视图模型中实例化它,结果是一样的。我还尝试将其转换为静态方法,结果相同。这是因为fileQuery对象超出范围,当您与UWP应用程序交互时,GC正在启动并从内存中删除该对象 尝试将fileQuery对象设置
我尝试在代码隐藏和视图模型中实例化它,结果是一样的。我还尝试将其转换为静态方法,结果相同。这是因为
fileQuery
对象超出范围,当您与UWP应用程序交互时,GC正在启动并从内存中删除该对象
尝试将fileQuery对象设置为类中的私有字段,这样,在您不再需要该类之前,它不会超出范围。我认为这是因为
fileQuery
对象超出范围,并且当您与UWP应用程序交互时,GC正在启动并从内存中删除该对象。请尝试将fileQuery
对象设置为类中的私有字段,这样,在您不再需要该类之前,它不会超出范围。这就解决了问题。如果你愿意的话,把这个作为答案贴出来,我会这样标记的。
public class WatchFolder
{
public bool ChangesMade { get; set; }
public WatchFolder()
{
ChangesMade = false;
}
public async void InitializeFolderWatch()
{
var folder = KnownFolders.PicturesLibrary.GetFolderAsync("TestWatchFolder");
var options = new QueryOptions();
options.FolderDepth = FolderDepth.Deep;
var fileQuery = folder.CreateFileQueryWithOptions(options);
fileQuery.ContentsChanged += OnContentsChangedFolder;
var files = await fileQuery.GetFilesAsync();
}
private void OnContentsChangedFolder(IStorageQueryResultBase sender, object args)
{
ChangesMade = true;
}
}