, await GetFileAsync("filename.xml");
böylece döner asla WinRT uygulamasında kapatır) GetFileAsync (beklemek üzere .Çağrı asla döner ve uygulama uygulama asılı, ben yüklemek ve uygulama başlatılması üzerine bir ayar dosyasını okumak ve zamanın yaklaşık% 90 çalışılıyor
Saatin yaklaşık dörtte biri, kodun içinden geçersem, aslında dosyayı döndürür ve okuyacaktır. Ben Visual Studio Çıktı penceresini izlersen
public async static Task Load()
{
StorageFolder folder = ApplicationData.Current.LocalFolder;
StorageFile file;
bool fileExists = true;
try
{
// The following line (often) never returns
file = await folder.GetFileAsync("filename.xml");
{
catch
{
fileExists = false;
}
// Do stuff with loaded file
}
:
App.xaml.cs:
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
FileLoader.Load().Wait();
// File-load dependent stuff
}
FileLoader.cs
İşte kod çok basitleştirilmiş versiyonu beklemeden bir süre sonra "The thread '<No Name>' (0x30c) has exited with code 0 (0x0)."
Herhangi bir fikri olan var mı? Burada neler oluyor? Varsayılan olarak
UI iş parçacığını, 'Bekle' diyerek görebileceğim kadar engellemiyorsunuz. Bu gerçekten kötü bir fikir. Heck, bu soruna neden olan olabilir. –
Bence Jon tam olarak doğru - OnLaunched'ı async olarak işaretleyip daha sonra Load() çağrısını beklemek için herhangi bir şans? Yapamazsanız, başka bir yaklaşım yükün bittikten sonra yürütülmesi için bir eylemi gerçekleştirmesi ve ardından eylemi sonlandırması olabilir (veya elbette, Load() işlevinin döndürdüğü görevde ContinueWith'i kullanabilirsiniz. aynen async/beklemeden önceki gibi :) –
İkiniz de haklısınız Jon ve James. Giriş için çok teşekkür ederim! Orijinal olarak "Wait" kullanıyordum çünkü geçersiz kılınmış bir yönteme "async" ekleyebileceğinizi fark etmedim ve "OnLaunched" in UI iş parçacığı üzerinde çalıştığını bilmiyordum. 'Bekle '' kaldırılıyor ve' OnLaunched''e 'async 'eklendiğinde hata düzeltildi! Yorumlarınızı cevap olarak işaretleyebilirdim. – jokeefe