Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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# HttpClient SendAsync,将进度输出到控制台_C#_Dotnet Httpclient_Sendasync - Fatal编程技术网

C# HttpClient SendAsync,将进度输出到控制台

C# HttpClient SendAsync,将进度输出到控制台,c#,dotnet-httpclient,sendasync,C#,Dotnet Httpclient,Sendasync,我只是想让一个基本的sendascync方法将它的进度写入控制台,即使在对GET做了一系列这样的回答之后,我也不知道这在POST中是如何工作的 我正在测试的文件是~100Mb,当它点击SendAsync方法时,它会一直保存到完成 我可能会错过什么 var request = new HttpRequestMessage { RequestUri = endpoint, Method = httpMethod, Content = data }; var result =

我只是想让一个基本的
sendascync
方法将它的进度写入控制台,即使在对GET做了一系列这样的回答之后,我也不知道这在POST中是如何工作的

我正在测试的文件是~100Mb,当它点击
SendAsync
方法时,它会一直保存到完成

我可能会错过什么

var request = new HttpRequestMessage
{
    RequestUri = endpoint,
    Method = httpMethod,
    Content = data
};

var result = string.Empty;
using (var response = await _httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead))
using (var responseStream = await response.Content.ReadAsStreamAsync())
{
    int read;
    var offset = 0;
    var responseBuffer = new byte[1024];
    do
    {
        read = await responseStream.ReadAsync(responseBuffer, 0, responseBuffer.Length);
        result += Encoding.UTF8.GetString(responseBuffer, 0, read);
        offset += read;
        Console.WriteLine($"Offset: {offset}");
    } while (read != 0);
    response.EnsureSuccessStatusCode();
}
return JsonConvert.DeserializeObject<T>(result);
var请求=新的HttpRequestMessage
{
RequestUri=endpoint,
方法=httpMethod,
内容=数据
};
var result=string.Empty;
使用(var response=wait_httpClient.sendaync(请求,HttpCompletionOption.ResponseHeadersRead))
使用(var responseStream=await response.Content.ReadAsStreamAsync())
{
int-read;
var偏移=0;
var responseBuffer=新字节[1024];
做
{
read=wait responseStream.ReadAsync(responseBuffer,0,responseBuffer.Length);
结果+=Encoding.UTF8.GetString(responseBuffer,0,read);
偏移量+=读取;
WriteLine($“Offset:{Offset}”);
}while(read!=0);
response.EnsureSuccessStatusCode();
}
返回JsonConvert.DeserializeObject(结果);

MSDN明确表示,对于SendAsync-
此操作不会阻塞。读取整个响应(包括内容)后,返回的任务对象将完成。
抱歉,它没有挂起,它正在等待
SendAsync
,因此等待
控制台。WriteLine
直到上传完成后才运行。这也是MSDN的意思。sendAsync的任务对象只有在提供完整响应时才会完成。没有间歇性的支持。还有,等待到底意味着什么?它不是一直等到上传完成吗?wait不
wait()
它允许其他进程在上传运行时继续。请再次检查。
等待运算符应用于异步方法中的任务,以暂停该方法的执行,直到等待的任务完成。此任务表示正在进行的工作。
MSDN明确表示,对于SendAsync-
此操作不会阻塞。读取整个响应(包括内容)后,返回的任务对象将完成。
抱歉,它没有挂起,它正在等待
SendAsync
,因此等待
控制台。WriteLine
直到上传完成后才运行。这也是MSDN的意思。sendAsync的任务对象只有在提供完整响应时才会完成。没有间歇性的支持。还有,等待到底意味着什么?它不是一直等到上传完成吗?wait不
wait()
它允许其他进程在上传运行时继续。请再次检查。
等待运算符应用于异步方法中的任务,以暂停该方法的执行,直到等待的任务完成。该任务表示正在进行的工作。