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()
它允许其他进程在上传运行时继续。请再次检查。等待运算符应用于异步方法中的任务,以暂停该方法的执行,直到等待的任务完成。该任务表示正在进行的工作。