C# 如何获取与StreamReader.ReadToEndAsync()返回但默认情况下未启动的任务类似的任务?
我使用C# 如何获取与StreamReader.ReadToEndAsync()返回但默认情况下未启动的任务类似的任务?,c#,file-io,task-parallel-library,streamreader,C#,File Io,Task Parallel Library,Streamreader,我使用System.IO.File.OpenText(字符串路径)返回的System.IO.StreamReader通过其Task ReadToEndAsync()方法生成一个异步全文文件读取Task 就我所见,它返回一个已启动的任务,很像TaskFactory.StartNew(…) 有什么好方法可以使任务通过休眠直到以更明确的方式启动时产生的结果而变得相同?通常的方法是使用Func委托延迟任务的启动 public Func<Task<string>> ReadToEn
System.IO.File.OpenText(字符串路径)
返回的System.IO.StreamReader
通过其Task ReadToEndAsync()方法生成一个异步全文文件读取Task
就我所见,它返回一个已启动的任务,很像TaskFactory.StartNew(…)
有什么好方法可以使任务通过休眠直到以更明确的方式启动时产生的结果而变得相同?通常的方法是使用Func
委托延迟任务的启动
public Func<Task<string>> ReadToEndLater(string path)
{
return async () =>
{
using(var file = System.IO.File.OpenText(path))
{
return await file.ReadToEndAsync();
}
}
}
在对返回的委托调用()
之前,任务不会启动(实际上,=>{…}
中没有任何内容会被执行)。它重新运行的任务与StartNew
不同,执行StartNew
将启动一个新线程ReadToEndAsync
更接近于返回类似于。
var readLater = ReadToEndLater(somePath);
//do stuff
var someText = await readLater();