StreamReader.ReadLineAsync是否有.NET 4.0替代品?

Asi*_*sik 5 .net c# async-await

我在一个项目上坚持使用.NET 4.0.StreamReader不提供ReadLine的Async或Begin/End版本.底层的Stream对象有BeginRead/BeginEnd,但这些取一个字节数组,因此我必须逐行实现逻辑.

4.0 Framework中有什么东西可以实现吗?

Uto*_*Ltd 0

您可以使用任务并行库 (TPL) 来执行您尝试执行的一些异步行为。

将同步方法包装在任务中:

var asyncTask = Task.Run(() => YourMethod(args, ...));
var asyncTask.Wait(); // You can also Task.WaitAll or other methods if you have several of these that you want to run in parallel.
var result = asyncTask.Result;
Run Code Online (Sandbox Code Playgroud)

如果您需要为 StreamReader 做很多这样的事情,那么如果您想模拟常规的异步方法,则可以继续将其变成 StreamReader 的扩展方法。只需注意错误处理和使用 TPL 的其他问题即可。