я делаю что-то для окна Маркет, что это проект Универсального приложения, и я отладка на 8,1 ноутбуке Windows, и окно 8,1 Surface Pro 3.странного поведение в StorageFolder.CreateFolderAsync
Я пытаясь создать некоторые вложенные папки в ApplicationData.Current.LocalFolder. Из конструктора главного экрана, я называю
CacheManager.InitializeOfflineFiles().Wait();
и код для CacheManager.InitializeOfflineFiles() является
public static async Task InitializeOfflineFiles()
{
try
{
StorageFolder s1 = await ApplicationData.Current.LocalFolder.CreateFolderAsync("one", CreationCollisionOption.OpenIfExists);
Debug.WriteLine("Created folder one");
StorageFolder s2 = await s1.CreateFolderAsync("two", CreationCollisionOption.OpenIfExists);
Debug.WriteLine("Created folder two");
StorageFolder s3 = await s2.CreateFolderAsync("three", CreationCollisionOption.OpenIfExists);
Debug.WriteLine("Created folder three");
StorageFolder s4 = await s3.CreateFolderAsync("four", CreationCollisionOption.OpenIfExists);
Debug.WriteLine("Created folder four");
}
catch (Exception e)
{
Debug.WriteLine("Windows doesn't love you. Exception: " + e.Message);
}
}
Когда я отладки это, не пройти создания папки «два ». Исключение не зарегистрировано, ничего нет. Кроме того, когда я запускаю это без отладки (Ctrl + F5), тот же результат, создается только dir «one/two» в локальном хранилище.
Это случай неправильного программирования async?
Я думал о т его, но тогда, почему он не зашел в тупик по первым вызовам «CreateFolderAsync», но только на третьем? –
@ThomasLevesque Я знаю, это странно. У нас определенно отсутствуют некоторые данные. Я не вижу другой причины, почему это должно висеть, но я не могу объяснить, что висит только после второго 'ожидания '. –
Благодарим вас за ответ. Я признаю, что я ничего не знаю об этом API окон, что очевидно из моего вопроса о нообале, но действительно сложно разобраться в этом тупике.В Java вам нужно много работать для тупика, здесь ОС делает это за вас. Я действительно хотел иметь синхронный блок инициализации, но они не предоставляют никаких методов синхронизации для хранения. Это действительно глупо. –