private void Button_Click(object sender, RoutedEventArgs e)
{
//Variante a) not working:
Task t = CreateTestFile();
t.Wait();
//Variante b) working:
Task t2 = Task.Run( () => CreateTestFile());
t2.Wait();
}
private async Task CreateTestFile()
{
IStorageFolder rootPath;
if (!(await FolderExists(ApplicationData.Current.LocalFolder, "Test")))
{
rootPath = await ApplicationData.Current.LocalFolder.CreateFolderAsync("Test");
}
else
{
rootPath = await ApplicationData.Current.LocalFolder.GetFolderAsync("Test");
}
var file1 = await rootPath.CreateFileAsync(DateTime.Now.ToString("HHmm") + ".txt");
return;
}
public async Task<bool> FolderExists(IStorageFolder rootPath, string foldername)
{
try
{
await rootPath.GetFolderAsync(foldername);
return true;
}
catch
{
return false;
}
}
Wenn ich den Button klicke und den unteren Code aufrufe mit Task.Run() dann funktioniert das einwandfrei und relativ flott.
Wenn ich es allerdings mit Task.Wait() ausführe, dann passiert irgendwie gar nichts, der Code bleibt irgendwo hängen. Wenn ich dann probiere langsam durchzudebuggen, läuft auch der Code durch ...
Was mache ich falsch bzw. wo liegt der Unterschied?