#c# #uwp #windows-runtime #background-task
#c# #uwp #windows-среда выполнения #фоновая задача
Вопрос:
В моем настольном приложении UWP я пытаюсь реализовать функцию для отслеживания изменений в библиотеке изображений с помощью фоновой задачи. Я следовал примерам использования (например, этому https://docs.microsoft.com/en-us/archive/msdn-magazine/2016/december/universal-windows-platform-file-system-monitoring-in-universal-windows-platform-apps ) и мой код выглядит так:
StorageLibrary docLib = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Pictures);
var requestStatus = await BackgroundExecutionManager.RequestAccessAsync();
if (!(
requestStatus == BackgroundAccessStatus.AllowedSubjectToSystemPolicy ||
requestStatus == BackgroundAccessStatus.AlwaysAllowed))
{
return;
}
var builder = new BackgroundTaskBuilder();
builder.Name = "Background task";
StorageLibraryContentChangedTrigger libraryTrigger = StorageLibraryContentChangedTrigger.Create(docLib);
builder.SetTrigger(libraryTrigger);
var task = builder.Register();
docLib.ChangeTracker.Enable();
Насколько я понимаю, это создает фоновую задачу «в процессе», и когда происходит изменение содержимого папки, будет вызвано приложение OnBackgroundActivated(), чтобы я мог обработать изменения там.
Однако, когда я вызываю регистрацию задачи, генерируется исключение. Исключением является:
System.Exception
HResult=0x80070490
Message=Element not found. (Exception from HRESULT: 0x80070490)
Я не понимаю, что происходит. Я попытался заменить триггер триггером изменения часового пояса в приведенном выше коде, и он работает нормально (регистрация прошла успешно, и код, активированный onbackground, выполнен), но триггер изменения содержимого не выполняется. Я не нашел ни одного примера подобной ошибки. Я использую Windows 10, сборка 19041. Единственное, что может быть нестандартным, это то, что я переместил расположение своих библиотек документов с диска C: на диск D:, но это стандартная функция ОС Windows, поэтому я не думаю, что это должно вызвать проблемы.
Комментарии:
1. Я попробовал код с библиотекой в расположении по умолчанию. Он работает правильно. Но когда я переместил библиотеки на общий диск. Ошибка кода в первой строке. Есть ли на вашем устройстве какие-либо другие библиотеки, которые все еще находятся в расположении по умолчанию, и затем вы могли бы попробовать использовать эту библиотеку, чтобы узнать, является ли изменение местоположения причиной вашего поведения?
2. К сожалению, все мои библиотеки находятся на диске D:, поэтому я не могу протестировать это на моем компьютере для разработки.
3. Не могли бы вы, пожалуйста, изменить библиотеку обратно на диск C или найти другое устройство для тестирования?