==[[C# asyncとawaitの動作確認]]==
[[C Sharp]] | [[C Sharp サンプルコード]] |
{
var me = new Program();
me.UnBlockingRequestUnBlocking[[R]]equest();
Console.WriteLine("***** 非同期メソッド終了 *****");
me.BlockingRequestBlocking[[R]]equest();
Console.WriteLine("***** 同期メソッド終了 *****");
}
private void BlockingRequestBlocking[[R]]equest()
{
Console.WriteLine("***** 同期メソッド開始 *****");
using (var client = new HttpClient())
{
var req = new HttpRequestMessageHttp[[R]]equestMessage(HttpMethod.Head, "http://typea.info/blg/glob/");
Console.WriteLine("***** 同期メソッド リクエスト結果を待つ *****");
// await キーワードを使用せず、Resultを使用キーワードを使用せず、[[R]]esultを使用 HttpResponseMessage Http[[R]]esponseMessage response = client.SendAsync(req, HttpCompletionOption.ResponseHeadersReadResponse[[Header]]sRead).Result;
var headerStrings = from header in response.Headers[[Header]]s
select $"{header.Key}:{string.Join(",",header.Value)}"
;
string headerList = string.Join(EnvironmentEn[[vi]]ronment.NewLine, headerStrings);
}
private async void UnBlockingRequestUnBlocking[[R]]equest()
{
Console.WriteLine("***** 非同期メソッド開始 *****");
using (var client = new HttpClient())
{
var req = new HttpRequestMessageHttp[[R]]equestMessage(HttpMethod.Head, "http://typea.info/blg/glob/");
Console.WriteLine("***** 非同期メソッド リクエスト結果を待たずにメソッド終了し、結果が返ったら以降の処理を実行 *****");
// await キーワードを使用
HttpResponseMessage Http[[R]]esponseMessage response = await client.SendAsync(req, HttpCompletionOption.ResponseHeadersReadResponse[[Header]]sRead);
var headerStrings = from header in response.Headers[[Header]]s
select $"{header.Key}:{string.Join(",", header.Value)}"
;
string headerList = string.Join(EnvironmentEn[[vi]]ronment.NewLine, headerStrings);
***** 非同期メソッド結果出力 *****
Connection:close
Accept-Ranges[[R]]anges:bytes
Date:Sun, 24 Dec 2017 00:14:21 GMT
ETag:"5b98aca-103b6-723edcc0"
Server:[[Apache]]/2.2.3,(CentOS)
***** 同期メソッド結果出力 *****
Connection:close
Accept-Ranges[[R]]anges:bytes
Date:Sun, 24 Dec 2017 00:14:21 GMT
ETag:"5b98aca-103b6-723edcc0"
Server:[[Apache]]/2.2.3,(CentOS)
***** 同期メソッド終了 *****
=====例2=====
***** 同期メソッド結果出力 *****
Connection:close
Accept-Ranges[[R]]anges:bytes
Date:Sun, 24 Dec 2017 00:15:06 GMT
ETag:"5b98aca-103b6-723edcc0"
Server:[[Apache]]/2.2.3,(CentOS)
***** 非同期メソッド結果出力 *****
Connection:close
Accept-Ranges[[R]]anges:bytes
Date:Sun, 24 Dec 2017 00:15:06 GMT
ETag:"5b98aca-103b6-723edcc0"
Server:[[Apache]]/2.2.3,(CentOS)
***** 同期メソッド終了 *****