我使用递归函数来做某事
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 =“完成!”;只有在所有迭代结束后才会完成。现在,它正在进行迭代的同时发生。如果我像那样运行这个功能
walk(fd);
tbOut.Text = "Done!";
结果仍然相同。当这个功能完全结束时如何等待?
答案 0 :(得分:4)
您不等待完成对walk函数的子调用。
因此,您所要做的就是将其更改为await walk(subDir)
。但是,由于您无法等待void函数,因此您必须稍微更改它才能使其正常工作。
要使您的步行功能等待,请将返回类型更改为Task
,如下所示:
public async Task walk(StorageFolder folder)