{"id":1084,"date":"2017-11-18T12:10:08","date_gmt":"2017-11-18T03:10:08","guid":{"rendered":"https:\/\/akamist.com\/blog\/?p=1084"},"modified":"2018-06-30T22:37:50","modified_gmt":"2018-06-30T13:37:50","slug":"casync-await%e3%81%ae%e4%bd%bf%e3%81%84%e6%96%b9%e3%82%92%e6%ad%a3%e3%81%97%e3%81%8f%e7%90%86%e8%a7%a3%e3%81%99%e3%82%8b","status":"publish","type":"post","link":"https:\/\/akamist.com\/blog\/archives\/1084","title":{"rendered":"[C#]async, await\u306e\u4f7f\u3044\u65b9\u3092\u6b63\u3057\u304f\u7406\u89e3\u3059\u308b"},"content":{"rendered":"<p>C#\u3067\u975e\u540c\u671f\u51e6\u7406\u3092\u884c\u3046\u305f\u3081\u306e\u6a5f\u80fd\u3067\u3042\u308basync\/await\u306e\u3075\u308b\u307e\u3044\u306b\u95a2\u3059\u308b\u8aac\u660e\u3067\u3059\u3002<\/p>\n<p>\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u3092\u898b\u306a\u304c\u3089\u78ba\u8a8d\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n<h2>\u51e6\u7406\u306b\u6642\u9593\u304c\u639b\u304b\u308b\u30e1\u30bd\u30c3\u30c9HeavyFunction()\u3092\u6e96\u5099\u3059\u308b<\/h2>\n<p>\u307e\u305a\u3001\u51e6\u7406\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u7528\u610f\u3057\u307e\u3059\u3002\u3053\u306e\u4f8b\u3067\u306fSleep\u3055\u305b\u3066\u3044\u307e\u3059\u304c\u3001\u5b9f\u969b\u306fWebAPI\u3092\u547c\u3073\u51fa\u3059\u3068\u304bDB\u30a2\u30af\u30bb\u30b9\u306e\u3088\u3046\u306a\u6642\u9593\u304c\u304b\u304b\u308b\u51e6\u7406\u3092\u30a4\u30e1\u30fc\u30b8\u3057\u3066\u3082\u3089\u3046\u3068\u826f\u3044\u3067\u3059\u3002<\/p>\n<pre><code class=\"language-csharp\">\/\/ \u6642\u9593\u306e\u304b\u304b\u308b\u51e6\u7406\nprivate string HeavyFunction() {\n    \/\/ 1\u79d2\u9593\u5f85\u3064\n    System.Threading.Thread.Sleep( 1000 );\n\n    \/\/ \u7d50\u679c\u3092\u8fd4\u3059\n    return \"Hello\";\n}\n<\/code><\/pre>\n<h2>HeavyFunction()\u3092\u30dc\u30bf\u30f3\u30af\u30ea\u30c3\u30af\u6642\u306e\u30cf\u30f3\u30c9\u30e9\u3067\u547c\u3073\u51fa\u3059<\/h2>\n<p>\u5148\u307b\u3069\u4f5c\u3063\u305fHeavyFunction()\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u4ee5\u4e0b\u306e\u5f62\u3067\u547c\u3073\u51fa\u305b\u307e\u3059\u304c\u3001HeavyFunction()\u306e\u5b9f\u884c\u306b1\u79d2\u304b\u304b\u308b\u305f\u3081\u3001\u753b\u9762\u306e\u63cf\u753b\u304c1\u79d2\u9593\u30b9\u30c8\u30c3\u30d7\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002<\/p>\n<p>\u753b\u9762\u304c\u56fa\u307e\u3063\u305f\u3088\u3046\u306b\u898b\u3048\u308b\u306e\u3067\u3001\u3053\u308c\u306f\u826f\u304f\u306a\u3044\u51e6\u7406\u3067\u3059\u3002<\/p>\n<pre><code class=\"language-csharp\">\/\/ \u30dc\u30bf\u30f3\u30af\u30ea\u30c3\u30af\u6642\u306e\u30cf\u30f3\u30c9\u30e9\nprivate void button1_Click( object sender, EventArgs e ) {\n    string message = HeavyFunction();\n    textBox1.Text = message;\n}\n<\/code><\/pre>\n<h2>HeavyFunction()\u3092\u975e\u540c\u671f\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u66f8\u304d\u63db\u3048\u308b<\/h2>\n<p>\u5148\u307b\u3069\u4f5c\u3063\u305fHeavyFunction()\u306e\u4f5c\u308a\u304c\u826f\u304f\u306a\u304b\u3063\u305f\u306e\u3067\u3001\u975e\u540c\u671f\u7248\u3067\u3042\u308bHeavyFunctionAsync()\u3092\u4f5c\u308a\u307e\u3059\u3002<\/p>\n<pre><code class=\"language-csharp\">\/\/ \u6642\u9593\u306e\u304b\u304b\u308b\u51e6\u7406\nprivate async Task&lt;string&gt; HeavyFunctionAsync() {\n    \/\/ \u975e\u540c\u671f\u30671\u79d2\u9593\u5f85\u3064\n    await Task.Delay( 1000 );\n\n    \/\/ \u7d50\u679c\u3092\u8fd4\u3059\n    return \"Hello\";\n}\n<\/code><\/pre>\n<p>\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306e\u9055\u3044\u306f\u4e0b\u8a18\u306e2\u70b9\u3067\u3059\u3002<\/p>\n<ul>\n<li>\u623b\u308a\u5024\u304cstring\u304b\u3089async Task<string>\u306b\u5909\u308f\u3063\u305f<\/li>\n<li>\u30b9\u30ea\u30fc\u30d7\u51e6\u7406\u306bawait\u304c\u3064\u3044\u3066\u304a\u308a\u3001\u975e\u540c\u671f\u3067\u306e\u5f85\u3061\u306b\u5909\u308f\u3063\u305f<\/li>\n<\/ul>\n<h2>HeavyFunctionAsync()\u3092\u30dc\u30bf\u30f3\u30af\u30ea\u30c3\u30af\u6642\u306e\u30cf\u30f3\u30c9\u30e9\u3067\u547c\u3073\u51fa\u3059<\/h2>\n<p>HeavyFunctionAsync()\u30e1\u30bd\u30c3\u30c9\u304casync\u7248\u306b\u306a\u3063\u305f\u3053\u3068\u3067\u3001\u547c\u3073\u5143\u5074\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5909\u308f\u308a\u307e\u3059\u3002<\/p>\n<pre><code class=\"language-csharp\">\/\/ \u30dc\u30bf\u30f3\u30af\u30ea\u30c3\u30af\u306e\u30cf\u30f3\u30c9\u30e9\nprivate async void button1_Click( object sender, EventArgs e ) {\n    string message = await HeavyFunctionAsync();\n    textBox1.Text = message;\n}\n<\/code><\/pre>\n<p>\u3053\u3061\u3089\u306e\u9055\u3044\u306f2\u70b9\u3067\u3059<\/p>\n<ul>\n<li>button1_Click\u306e\u30b7\u30b0\u30cd\u30c1\u30e3\u306basync\u304c\u8ffd\u52a0\u3055\u308c\u305f<\/li>\n<li>\u95a2\u6570\u547c\u3073\u51fa\u3057\u306e\u524d\u306bawait\u304c\u3064\u3044\u3066\u3044\u308b<\/li>\n<\/ul>\n<p>\u975e\u540c\u5316\u3057\u305f\u3053\u3068\u306b\u3088\u3063\u3066\u51e6\u7406\u306e\u5b9f\u884c\u30bf\u30a4\u30df\u30f3\u30b0\u304c\u3069\u3046\u5909\u308f\u3063\u305f\u304b\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001\u30ed\u30b0\u3092\u5165\u308c\u3066\u307f\u307e\u3059\u3002<\/p>\n<pre><code class=\"language-csharp\">\/\/ \u30dc\u30bf\u30f3\u30af\u30ea\u30c3\u30af\u306e\u30cf\u30f3\u30c9\u30e9\nprivate async void button1_Click( object sender, EventArgs e ) {\n    textBox1.AppendText( \"[1]\" );\n\n    string message = await HeavyFunctionAsync();\n\n    textBox1.AppendText( \"[2]\" );\n    textBox1.AppendText( message );\n    textBox1.AppendText( \"[3]\" );\n}\n<\/code><\/pre>\n<p>\u3053\u306e\u6642\u306e\u5b9f\u884c\u7d50\u679c\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u5b9f\u969b\u306b\u5b9f\u884c\u3057\u3066\u307f\u308b\u3068\u5206\u304b\u308a\u307e\u3059\u304c\u30011\u79d2\u304b\u3051\u3066\u51e6\u7406\u3092\u3057\u3066\u3044\u308b\u9593\u3082Form\u306e\u518d\u63cf\u753b\u304c\u30b9\u30c8\u30c3\u30d7\u3059\u308b\u3053\u3068\u306f\u611b\u308a\u307e\u305b\u3093\u3002<\/p>\n<ul>\n<li>\"[1]\"\u304c\u51fa\u529b\u3055\u308c\u308b<\/li>\n<li>1\u79d2\u5f85\u3064(\u5f85\u3063\u3066\u3044\u308b\u9593\u3082\u30a6\u30a3\u30f3\u30c9\u30a6\u306f\u518d\u63cf\u753b\u3055\u308c\u7d9a\u3051\u308b)<\/li>\n<li>\"[2]Hello[3]\"\u304c\u7d9a\u3051\u3066\u51fa\u529b\u3055\u308c\u308b<\/li>\n<\/ul>\n<h2>HeavyFunctionAsync()\u3092\u540c\u671f\u547c\u3073\u51fa\u3057\u3057\u3066\u307f\u308b<\/h2>\n<p>HeavyFunctionAsync()\u306e\u547c\u3073\u51fa\u3057\u6642\u306bawait\u3092\u3064\u3051\u305a\u3001\u975e\u540c\u671f\u51e6\u7406\u3092\u884c\u3063\u3066\u3044\u308bTask\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u7d42\u4e86\u5f85\u3061(Wait\u30e1\u30bd\u30c3\u30c9\u306e\u547c\u3073\u51fa\u3057)\u3092\u884c\u3063\u3066\u307f\u307e\u3059<\/p>\n<pre><code class=\"language-csharp\">private void button1_Click( object sender, EventArgs e ) {\n    Task&lt;string&gt; messageTask = HeavyFunctionAsync();\n    messageTask.Wait();                              \/\/ NG:\u3053\u3053\u3067\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u3059\u308b\n    textBox1.AppendText( message.Result );\n}\n\n\/\/ \u6642\u9593\u306e\u304b\u304b\u308b\u51e6\u7406\nprivate async Task&lt;string&gt; HeavyFunctionAsync() {\n    \/\/ \u975e\u540c\u671f\u30671\u79d2\u9593\u5f85\u3064\n    await Task.Delay( 1000 );\n\n    \/\/ \u7d50\u679c\u3092\u8fd4\u3059\n    return \"Hello\";\n}\n<\/code><\/pre>\n<p>\u3067\u3059\u304c\u3001\u3053\u308c\u306f\u6b63\u3057\u304f\u52d5\u4f5c\u3057\u307e\u305b\u3093\u3002<\/p>\n<p>\u7406\u7531\u306f\u30bf\u30b9\u30af\u304c\u30b7\u30f3\u30b0\u30eb\u30b9\u30ec\u30c3\u30c9\u3067\u52d5\u4f5c\u3057\u3066\u3044\u308b\u306e\u3067\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u304c\u767a\u751f\u3059\u308b\u305f\u3081\u3067\u3059\u3002button1_Click()\u306fWait()\u306e\u5b8c\u4e86\u5f85\u3061\u306b\u306a\u308b\u4e00\u65b9\u3067\u3001messageTask\u306fbutton1_Click()\u304c\u7d42\u4e86\u3057\u306a\u3044\u3068Task\u306e\u4f5c\u696d\u3092\u884c\u3048\u306a\u3044\u305f\u3081\u3001\u304a\u4e92\u3044\u304c\u76f8\u624b\u5f85\u3061\u306b\u306a\u3063\u3066\u3057\u307e\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<h2>\u975e\u540c\u671f\u51e6\u7406\u3092\u5225\u30b9\u30ec\u30c3\u30c9\u4e0a\u3067\u884c\u308f\u305b\u3066\u307f\u308b<\/h2>\n<p>\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u3059\u308b\u306e\u306f\u3001UI\u30b9\u30ec\u30c3\u30c9\u3068Task\u306e\u5b9f\u884c\u304c\u540c\u4e00\u30b9\u30ec\u30c3\u30c9\u3067\u52d5\u4f5c\u3059\u308b\u305f\u3081\u3067\u3059\u3002<\/p>\n<p>\u3053\u308c\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306bConfigureAwait(false)\u3092\u8ffd\u52a0\u3059\u308b\u3068\u3001\u975e\u540c\u671f\u306eTask\u51e6\u7406\u3092\u5225\u30b9\u30ec\u30c3\u30c9\u3067\u5b9f\u884c\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u305f\u3081\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u306f\u767a\u751f\u305b\u305a1\u79d2\u5f8c\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u3067\u3059\u304c\u3001message.Wait()\u306e\u5f85\u3061\u304cUI\u30b9\u30ec\u30c3\u30c9\u3067\u884c\u308f\u308c\u308b\u305f\u3081\u3001\u753b\u9762\u306e\u518d\u63cf\u753b\u304c\u884c\u308f\u308c\u305a\u30d5\u30ea\u30fc\u30ba\u3057\u305f\u3088\u3046\u306b\u898b\u3048\u307e\u3059\u3002<\/p>\n<pre><code class=\"language-csharp\">private void button1_Click( object sender, EventArgs e ) {\n    Task&lt;string&gt; message = HeavyFunctionAsync();\n    message.Wait();\n    textBox1.AppendText( message.Result );\n}\n\n\/\/ \u6642\u9593\u306e\u304b\u304b\u308b\u51e6\u7406\nprivate async Task&lt;string&gt; HeavyFunctionAsync() {\n    \/\/ \u975e\u540c\u671f\u30671\u79d2\u9593\u5f85\u3064\n    await Task.Delay( 1000 ).ConfigureAwait( false ); \/\/ \u5225\u30b9\u30ec\u30c3\u30c9\u3067Task\u51e6\u7406\u3092\u5b9f\u884c\n\n    \/\/ \u7d50\u679c\u3092\u8fd4\u3059\n    return \"Hello\";\n}\n<\/code><\/pre>\n<h2>\u30c7\u30fc\u30bf\u304c\u5c4a\u304f\u305f\u3073\u306b\u5c11\u3057\u3065\u3064\u51e6\u7406\u3092\u9032\u3081\u308b<\/h2>\n<p>\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u53d7\u4fe1\u3059\u308b\u6642\u306f\u3001async\u306a\u30e1\u30bd\u30c3\u30c9\u5185\u3067Task.Delay()\u3092\u9069\u5207\u306b\u631f\u307f\u8fbc\u3093\u3067\u3044\u304f\u3053\u3068\u3067\u3001\u4ed6\u306e\u51e6\u7406\u3068\u4e26\u5217\u3067\u3059\u3053\u3057\u3065\u3064\u4f5c\u696d\u3092\u9032\u3081\u3066\u3044\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Delay()\u306e\u6570\u5b57\u3092\u5927\u304d\u304f\u3059\u308b\u3068\u4ed6\u306e\u4f5c\u696d\u306b\u53d7\u3051\u6e21\u3059\u6642\u9593\u304c\u9577\u304f\u306a\u308b\u306e\u306e\u3067\u3001GetHtmlBodyAsync()\u304c\u7d42\u308f\u308b\u307e\u3067\u306e\u6642\u9593\u306f\u9577\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre><code class=\"language-csharp\">private void button1_Click( object sender, EventArgs e ) {\n    GetHtmlBodyAsync();\n}\n\nprivate async void GetHtmlBodyAsync() {\n\n    string url = \"http:\/\/www.yahoo.co.jp\/\";\n\n    using ( var client = new HttpClient() ) {\n        \/\/ \u975e\u540c\u671f\u3067GET\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\n        System.IO.Stream body = await client.GetStreamAsync( url );\n\n        using( var bodyTextReader = new System.IO.StreamReader( body ) ) {\n\n            \/\/ \u5fdc\u7b54\u3092\u6700\u5f8c\u307e\u3067\u53d6\u5f97\u3059\u308b\u307e\u3067\u7e70\u308a\u8fd4\u3057\n            while( !bodyTextReader.EndOfStream ) {\n                \/\/ 1\u884c\u5206\u3060\u3051\u30c6\u30ad\u30b9\u30c8\u3092\u53d6\u5f97\n                string bodyLine = await bodyTextReader.ReadLineAsync();\n\n                \/\/ \u53d6\u5f97\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u63cf\u753b\n                textBox1.AppendText( bodyLine + Environment.NewLine );\n\n                \/\/ 5mSec\u5f85\u3064\n                await Task.Delay( 5 );\n            }\n        }\n    }\n}\n<\/code><\/pre>\n<p>async\u6307\u5b9a\u3057\u305f\u30e1\u30bd\u30c3\u30c9\u3067\u306f\u3001\u623b\u308a\u5024\u3092Task&lt;>\u4ee5\u5916\u306bvoid\u3067\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\u305f\u3060\u3057\u3001void\u3092\u6307\u5b9a\u3059\u308b\u3068\u975e\u540c\u671f\u5b9f\u884c\u3057\u3066\u3044\u308b\u51e6\u7406\u304c\u3044\u3064\u7d42\u308f\u3063\u305f\u304b\u3092\u547c\u3073\u5143\u306f\u8a8d\u8b58\u3067\u304d\u307e\u305b\u3093\u3002\u307e\u305f\u975e\u540c\u671f\u51e6\u7406\u5185\u3067\u4f8b\u5916\u304c\u767a\u751f\u3057\u305f\u3068\u304d\u306b\u88dc\u8db3\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002<\/p>\n<h2>\u975e\u540c\u671f\u51e6\u7406\u3092\u533f\u540d\u30e1\u30bd\u30c3\u30c9\u30fb\u30e9\u30e0\u30c0\u5f0f\u306b\u3059\u308b<\/h2>\n<p>\u95a2\u6570\u5b9a\u7fa9\u306e\u982d\u306b\u4ed8\u3051\u308basync\u306f\u3001delegete\u3068\u7d44\u307f\u5408\u308f\u305b\u3066\u4f7f\u3046\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre><code class=\"language-csharp\">public Form1() {\n    InitializeComponent();\n\n    \/\/ Form1\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3067\u3001\u30dc\u30bf\u30f3\u306eClick\u30cf\u30f3\u30c9\u30e9\u3092\u767b\u9332\n    button2.Click += async delegate ( object sender, EventArgs e ) {\n        \/\/ \u975e\u540c\u671f\u30671\u79d2\u9593\u5f85\u3064\n        await Task.Delay( 1000 ); \/\/ \u5225\u30b9\u30ec\u30c3\u30c9\u3067Task\u51e6\u7406\u3092\u5b9f\u884c\n\n        \/\/ \u7d50\u679c\u3092\u753b\u9762\u306b\u51fa\u529b\n        textBox1.Text = \"Hello\";\n    };\n}\n<\/code><\/pre>\n<p>\u3055\u3089\u306b\u30e9\u30e0\u30c0\u5f0f\u306b\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002<\/p>\n<pre><code class=\"language-csharp\">public Form1() {\n    InitializeComponent();\n\n    \/\/ Form1\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3067\u3001\u30dc\u30bf\u30f3\u306eClick\u30cf\u30f3\u30c9\u30e9\u3092\u767b\u9332\n    button2.Click += async ( sender, e ) =&gt; {\n        \/\/ \u975e\u540c\u671f\u30671\u79d2\u9593\u5f85\u3064\n        await Task.Delay( 1000 ); \/\/ \u5225\u30b9\u30ec\u30c3\u30c9\u3067Task\u51e6\u7406\u3092\u5b9f\u884c\n\n        \/\/ \u7d50\u679c\u3092\u753b\u9762\u306b\u51fa\u529b\n        textBox1.Text = \"Hello\";\n    };\n}\n<\/code><\/pre>\n<h2>\u975e\u540c\u671f\u51e6\u7406\u306e\u4e2d\u3067\u767a\u751f\u3057\u305f\u4f8b\u5916\u3092\u88dc\u8db3\u3059\u308b<\/h2>\n<p>\u975e\u540c\u671f\u51e6\u7406\u306e\u4e2d\u3067\u767a\u751f\u3057\u305f\u4f8b\u5916\u306f\u3001\u51e6\u7406\u3092\u547c\u3073\u51fa\u3057\u305f\u6642\u3067\u306f\u306a\u304f\u3001Wait()\u3082\u3057\u304f\u306fResult\u304c\u547c\u3070\u308c\u305f\u30bf\u30a4\u30df\u30f3\u30b0\u3067AggregateException\u4f8b\u5916\u304cthrow\u3055\u308c\u307e\u3059\u3002<br \/>\n\u5b9f\u969b\u306b\u767a\u751f\u3057\u305f\u5185\u90e8\u4f8b\u5916\u306fInnerExceptions\u30d7\u30ed\u30d1\u30c6\u30a3\u304b\u3089\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002\u5185\u90e8\u4f8b\u5916\u306f\u8907\u6570\u767a\u751f\u3057\u3046\u308b\u306e\u3067foreach\u3067\u306e\u30eb\u30fc\u30d7\u51e6\u7406\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n<pre><code class=\"language-csharp\">\/\/ 1\u79d2\u5f8c\u306b\u4f8b\u5916\u304c\u767a\u751f\u3059\u308b\u975e\u540c\u671f\u51e6\u7406\nprivate async Task&lt;string&gt; BadFunctionAsync() {\n    \/\/ \u975e\u540c\u671f\u30671\u79d2\u9593\u5f85\u3064\n    await Task.Delay( 1000 ).ConfigureAwait( false ); \/\/ \u5225\u30b9\u30ec\u30c3\u30c9\u3067Task\u51e6\u7406\u3092\u5b9f\u884c\n\n    \/\/ \u7d50\u679c\u3092\u8fd4\u3059\n    throw new Exception( \"\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\" );\n}\n\n\nprivate void button1_Click( object sender, EventArgs e ) {\n    Task&lt;string&gt; messageAsync = null;\n\n    \/\/ \u975e\u540c\u671f\u51e6\u7406\u3092\u547c\u3073\u51fa\u3057\u30013\u79d2\u5f85\u3064\n    try {\n        messageAsync = BadFunctionAsync();\n        System.Threading.Thread.Sleep( 3000 );\n    } catch ( Exception ex ) {\n        textBox1.Text = \"\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u307e\u3057\u305f[1]\" + ex.Message;\n    }\n\n    \/\/ \u975e\u540c\u671f\u51e6\u7406\u306e\u7d50\u679c\u3092\u53d6\u5f97\u3059\u308b\n    try {\n        string message = messageAsync.Result;\n    } catch ( AggregateException ex ) {\n        textBox1.Text = \"\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u307e\u3057\u305f[2]\" + Environment.NewLine;\n        foreach ( var inner in ex.InnerExceptions ) {\n            textBox1.Text += inner.Message + Environment.NewLine;\n        }\n    }\n}\n<\/code><\/pre>\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u4ee5\u4e0b\u306e\u51fa\u529b\u306b\u306a\u308a\u307e\u3059\u3002\u305f\u3057\u304b\u306bResult\u306e\u5b9f\u884c\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u4f8b\u5916\u3092\u88dc\u8db3\u3067\u304d\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3059\u3002<\/p>\n<pre><code class=\"language-bash\">\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u307e\u3057\u305f[2]\n\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\n<\/code><\/pre>\n<p><a href=\"https:\/\/www.amazon.co.jp\/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0C-%E7%AC%AC7%E7%89%88-Ian-Griffiths\/dp\/4873116503\/\/ref=as_li_ss_il?ie=UTF8&linkCode=li3&tag=aka201209-22&linkId=7aaf8e384ffc696bd99d73a1c6a39c93\" target=\"_blank\"><img decoding=\"async\" border=\"0\" src=\"\/\/ws-fe.amazon-adsystem.com\/widgets\/q?_encoding=UTF8&ASIN=4873116503&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=aka201209-22\" ><\/a><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/ir-jp.amazon-adsystem.com\/e\/ir?t=aka201209-22&l=li3&o=9&a=4873116503\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/><br \/>\n<a href=\"https:\/\/amzn.to\/2lL4Z8U\">\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0C# \u7b2c7\u7248<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C#\u3067\u975e\u540c\u671f\u51e6\u7406\u3092\u884c\u3046\u305f\u3081\u306e\u6a5f\u80fd\u3067\u3042\u308basync\/await\u306e\u3075\u308b\u307e\u3044\u306b\u95a2\u3059\u308b\u8aac\u660e\u3067\u3059\u3002 \u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u3092\u898b\u306a\u304c\u3089\u78ba\u8a8d\u3057\u3066\u3044\u304d\u307e\u3059\u3002 \u51e6\u7406\u306b\u6642\u9593\u304c\u639b\u304b\u308b\u30e1\u30bd\u30c3\u30c9HeavyFunction()\u3092\u6e96\u5099\u3059\u308b \u307e\u305a\u3001\u51e6\u7406\u306b\u6642\u9593\u304c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1290,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[33],"tags":[100],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/akamist.com\/blog\/wp-content\/uploads\/2017\/11\/icon_csharp.png","jetpack-related-posts":[{"id":1188,"url":"https:\/\/akamist.com\/blog\/archives\/1188","url_meta":{"origin":1084,"position":0},"title":"[C#]\u975e\u540c\u671f\u306e\u95a2\u6570\u306e\u547c\u3073\u51fa\u3057\u3067\u3001\u30a8\u30e9\u30fc\u300cCS4008 'void'\u3092\u5f85\u6a5f\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u300d\u304c\u51fa\u308b\u3068\u304d\u306b\u3059\u308b\u3053\u3068","date":"2017\u5e7411\u670823\u65e5","format":false,"excerpt":"C#\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3067async\u304c\u4ed8\u3044\u305f\u30e1\u30bd\u30c3\u30c9\u3092\u4f5c\u3063\u3066\u547c\u3073\u51fa\u3057\u305f\u3068\u304d\u3001**CS4008 'void'\u3092\u2026","rel":"","context":"C#","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/akamist.com\/blog\/wp-content\/uploads\/2017\/11\/icon_csharp.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1195,"url":"https:\/\/akamist.com\/blog\/archives\/1195","url_meta":{"origin":1084,"position":1},"title":"[C#]WinForm\u304b\u3089\u30d0\u30c3\u30c1\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u975e\u540c\u671f\u3067\u5b9f\u884c\u3059\u308b","date":"2017\u5e7411\u670823\u65e5","format":false,"excerpt":"Windows\u3067C#\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u304b\u3089\u3001\u5225\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5b9f\u884c\u3059\u308b\u5834\u5408\u3001Process.Start()\u30e1\u2026","rel":"","context":"C#","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/akamist.com\/blog\/wp-content\/uploads\/2017\/11\/icon_csharp.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1095,"url":"https:\/\/akamist.com\/blog\/archives\/1095","url_meta":{"origin":1084,"position":2},"title":"[C#]WinForm\u3067AngleSharp\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u3088\u308b\u30b9\u30af\u30ec\u30a4\u30d4\u30f3\u30b0\u3092\u884c\u3046","date":"2017\u5e7411\u670819\u65e5","format":false,"excerpt":"VisualStudio+WinForm\u306e\u74b0\u5883\u3067\u3001AngleSharp\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u5229\u7528\u3057\u305fWeb\u30da\u30fc\u2026","rel":"","context":"C#","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/akamist.com\/blog\/wp-content\/uploads\/2017\/11\/1095_8.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1119,"url":"https:\/\/akamist.com\/blog\/archives\/1119","url_meta":{"origin":1084,"position":3},"title":"[C#]AngleSharp\u3067\u3001\u30d5\u30a9\u30fc\u30e0\u306b\u5024\u3092\u5165\u529b\u3057\u3066\u30da\u30fc\u30b8\u9077\u79fb\u3059\u308b","date":"2017\u5e7411\u670819\u65e5","format":false,"excerpt":"C#\u306e\u30b9\u30af\u30ec\u30a4\u30d4\u30f3\u30b0\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3042\u308bAngleSharp\u3092\u4f7f\u3063\u3066\u3001html\u306eform\u306b\u5024\u3092\u5165\u529b\u3057\u3001s\u2026","rel":"","context":"C#","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/akamist.com\/blog\/wp-content\/uploads\/2017\/11\/1119.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":433,"url":"https:\/\/akamist.com\/blog\/archives\/433","url_meta":{"origin":1084,"position":4},"title":"[PHP]Slim Framework\u3067API\u30ad\u30fc\u306b\u3088\u308b\u30a2\u30af\u30bb\u30b9\u8a8d\u8a3c\u3092\u5b9f\u88c5\u3059\u308b","date":"2017\u5e748\u670810\u65e5","format":false,"excerpt":"PHP\u3092\u4f7f\u3063\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u3001\u7c21\u5358\u306aWebAPI\u3092\u5b9f\u88c5\u3057\u305f\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u5c0f\u3055\u306aWebAPI\u30b5\u30fc\u30d0\u2026","rel":"","context":"SlimFramework","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/akamist.com\/blog\/wp-content\/uploads\/2017\/08\/icon_slimframework.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1129,"url":"https:\/\/akamist.com\/blog\/archives\/1129","url_meta":{"origin":1084,"position":5},"title":"[C#]AngleSharp\u3067\u3001JavaScript\u3092\u542b\u3080\u30b5\u30a4\u30c8\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u89e3\u91c8\u3055\u305b\u308b","date":"2017\u5e7411\u670820\u65e5","format":false,"excerpt":"C#\u306eAngleSharp\u30d1\u30c3\u30b1\u30fc\u30b8\u3067\u3001JavaScript\u3092\u542b\u3080\u30da\u30fc\u30b8\u3092\u51e6\u7406\u3057\u305f\u3044\u3068\u304d\u306b\u3001Java\u2026","rel":"","context":"C#","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/akamist.com\/blog\/wp-content\/uploads\/2017\/11\/icon_anglesharp.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/akamist.com\/blog\/wp-json\/wp\/v2\/posts\/1084"}],"collection":[{"href":"https:\/\/akamist.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/akamist.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/akamist.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/akamist.com\/blog\/wp-json\/wp\/v2\/comments?post=1084"}],"version-history":[{"count":5,"href":"https:\/\/akamist.com\/blog\/wp-json\/wp\/v2\/posts\/1084\/revisions"}],"predecessor-version":[{"id":2994,"href":"https:\/\/akamist.com\/blog\/wp-json\/wp\/v2\/posts\/1084\/revisions\/2994"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/akamist.com\/blog\/wp-json\/wp\/v2\/media\/1290"}],"wp:attachment":[{"href":"https:\/\/akamist.com\/blog\/wp-json\/wp\/v2\/media?parent=1084"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/akamist.com\/blog\/wp-json\/wp\/v2\/categories?post=1084"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/akamist.com\/blog\/wp-json\/wp\/v2\/tags?post=1084"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}