Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取与StreamReader.ReadToEndAsync()返回但默认情况下未启动的任务类似的任务?_C#_File Io_Task Parallel Library_Streamreader - Fatal编程技术网

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();