在C#中,yield關鍵字通常用于實現迭代器功能。在并發編程中,yield可以與任務(Task)、異步方法(async/await)等結合使用,實現并發操作。
下面是一些在并發編程中使用yield的示例:
public async Task<IEnumerable<int>> GetSomeNumbersAsync()
{
for (int i = 0; i < 10; i++)
{
await Task.Delay(100); // 模擬異步操作
yield return i;
}
}
在上面的示例中,GetSomeNumbersAsync方法返回一個IEnumerable
public async Task<IEnumerable<int>> ProcessDataAsync()
{
List<Task<int>> tasks = new List<Task<int>>();
for (int i = 0; i < 10; i++)
{
tasks.Add(ProcessItemAsync(i));
}
foreach (var task in tasks)
{
yield return await task;
}
}
public async Task<int> ProcessItemAsync(int item)
{
await Task.Delay(100); // 模擬異步操作
return item * 2;
}
在上面的示例中,ProcessDataAsync方法創建了多個并發任務,并在每個任務完成后使用yield返回結果。
總的來說,yield關鍵字在并發編程中可以幫助簡化代碼邏輯,實現并發操作的順序控制和結果返回。但需要注意的是,yield在異步方法中使用時可能會導致一些性能問題,因此需要謹慎使用。