我用递归函数做某事
public async void walk(StorageFolder folder)
{
IReadOnlyList<StorageFolder> subDirs = null;
subDirs = await folder.GetFoldersAsync();
foreach (var subDir in subDirs)
{
var dirPath = new Profile() { FolderPath = subDir.Path};
db.Insert(dirPath);
walk(subDir);
}
tbOut.Text = "Done!";
}
所以,我想要 tbOut.Text = "Done!";只有在所有迭代结束后才会完成。现在它在迭代过程中同时发生。如果我像那样运行这个函数
walk(fd);
tbOut.Text = "Done!";
结果还是一样。如何等待此功能完全结束?
最佳答案
您不必等待对步行功能的子调用完成。
因此,您所要做的就是将其更改为 await walk(subDir)
。但是,由于您不能等待 void 函数,因此您必须稍微更改它才能使其工作。
要使您的 walk 函数可等待,请将返回类型更改为 Task
,如下所示:
public async Task walk(StorageFolder folder)
关于c# - 如何等待所有异步操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16385961/