⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

高级异步流:IAsyncEnumerable 与协作式取消

超越基础,实现带取消令牌、速率限制和背压的异步流,处理分页API和大文件逐行读取。 · 难度:入门 · +10XP

高级异步流:IAsyncEnumerable 与协作式取消

IAsyncEnumerable<T> 不仅支持 foreach await,还可以与 CancellationToken 配合实现优雅停机。本教程展示如何编写一个异步流生成器,支持限速(每秒 n 项)、超时取消和背压(通过 Channel 或 SemaphoreSlim)。你还会学到如何将传统的 Task<List<T>> 分页 API 转换为逐项流,减少内存占用并支持中断。

public async IAsyncEnumerable<string> ReadLinesAsync(string path, [EnumeratorCancellation] CancellationToken ct = default)
{
    using var reader = File.OpenText(path);
    while (!reader.EndOfStream)
    {
        ct.ThrowIfCancellationRequested();
        yield return await reader.ReadLineAsync(ct);
        await Task.Delay(100, ct); // 限速
    }
}

// 调用 await foreach (var line in ReadLinesAsync("data.txt").WithCancellation(token)) { Process(line); }

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 148 篇
0 完成
🔥 0