对于 C# 中 Task 的 StartNew 与 WhenAll 相互配合的实验
💡
原文中文,约2800字,阅读约需7分钟。
📝
内容提要
本文讨论了C#中Task的StartNew和WhenAll的配合使用,通过实验验证了不同情况下的效果。作者得出结论:使用Task.Factory.StartNew方法启动同步方法或Task.Run方法,配合await Task.WhenAll能达到预期效果;但如果Task.Factory.StartNew方法启动的是异步方法,则需要加上Unwrap方法。作者还发现异步方法中无法获取Task.CurrentId的值,而Thread.CurrentThread.ManagedThreadId则稳定。文章提供了测试程序的源码地址,鼓励读者自行探索其他组合情况和发现。
🎯
关键要点
- 使用 Task.Factory.StartNew 启动同步方法或 Task.Run 方法,配合 await Task.WhenAll 能达到预期效果。
- 如果 Task.Factory.StartNew 启动的是异步方法,则需要加上 Unwrap 方法。
- 异步方法中无法获取 Task.CurrentId 的值,而 Thread.CurrentThread.ManagedThreadId 则稳定。
- 实验中展示了五种情况,结果显示除了异步方法的情况外,其他情况均正常。
- 建议读者自行探索其他组合情况和发现。
➡️