üzerinde bekletme Yöntemlerimden bazı garip davranışlar görüyorum. Yakın zamanda tüm zip arşivimi açmanın tüm Windows cihazlarında performans göstermediğini keşfettim. O kadar ki, ihtiyacım olan tek bir dosyayı ayıklamak için başvurdum, onu kullanarak arşivin geri kalanını ayıklamak için bekliyorum. Ancak, şu anda tek bir dosyayı çıkarmak için kod ve tüm arşivi ayıklamak için kod aynı yöntemden çağrılıyor. Bu yöntem, aslen ve en sonunda başlangıçta App.xaml.cs dosyasındaki kod tarafından kullanıcı arabiriminde çağrılır. Bu yöntemi çağırdığımda, uygulamanın yüklenmesi için ihtiyacım olan zip arşivinde bir dosya olduğu için tamamlanmasını beklemek için bekletme anahtar sözcüğünü kullanıyorum.Async çağrısı için beklemede olan async yöntemini
App.xaml şuna benzer:
public static void ChangeUniverse(string universe) {
await DownloadArchive(universe);
}
public async Task DownloadArchive(string universe) {
ZipArchive archive = magic; // get it somehow
var someLocalFilePath = magic; // the exact location I need to extract data.json
var someLocalPath = magic; // the exact location I need to extract the zip
archive.GetEntry("data.json").ExtractToFile(someLocalFilePath);
// notice I do NOT await
ExtractFullArchive(archive, someLocalPath);
}
public async Task ExtractFullArchive(ZipArchive archive, string path) {
archive.ExtractToDirectory(path, true); // extracting using an override nice extension method I found on SO.com
}
sorun ExtractFullArchive tamamlanıncaya kadar DownloadArchive dönmek olmamasıdır ve ExtractFullArchive bir UZUN alıyor şudur:
SharedContext.ChangeUniverse("1234");
SharedContext şöyle zaman. DownloadArchive tamamlanırken asenkronize olarak yürütmek için ExtractFullArchive'a ihtiyacım var. Tamamlandığında umurumda değil.
'ExtractToDirectory' aslında asenkron bir yöntem midir? –