小编Ra'*_*raj的帖子

在异步方法中使用“yield return”来实现流水线

我正在构建一个 UWP 应用程序,它从文件夹中获取文件列表,对它们进行一些处理,然后删除这些文件。

这工作正常:

List<StorageFile> files;
public MainPage()
{
     this.InitializeComponent();
     files = new List<StorageFile>();
}

private async Task<List<StorageFile>> GetFiles(StorageFolder folder)
{
     var items = await folder.GetItemsAsync();          
     foreach (var item in items)
     {
         if (item.GetType() == typeof(StorageFile))
             files.Add(item);
         else
             await GetFiles(item as StorageFolder);
     }

     return files;
}


private async void GetFilesBtn_Click(object sender, RoutedEventArgs e)
{
     // opening folder picker, then selecting a folder
     var files = await GetFiles(folder);    
     // process files
     ProcessFiles(files);    
     // dispose
     DisposeFiles(files);
}
Run Code Online (Sandbox Code Playgroud)

然而,当处理大量文件时,内存消耗非常高(显然)。

因此,我想到的是使用yield return file …

c# async-await uwp

7
推荐指数
2
解决办法
5768
查看次数

标签 统计

async-await ×1

c# ×1

uwp ×1