{"id":302,"date":"2017-01-04T12:28:47","date_gmt":"2017-01-04T03:28:47","guid":{"rendered":"http:\/\/marius.main.jp\/software\/blog\/?p=302"},"modified":"2017-01-04T12:28:47","modified_gmt":"2017-01-04T03:28:47","slug":"for%e3%83%bbforeach%e3%81%ae%e3%83%91%e3%83%a9%e3%83%ac%e3%83%ab%e5%87%a6%e7%90%86","status":"publish","type":"post","link":"https:\/\/todosoft.net\/blog\/?p=302","title":{"rendered":"For\u30fbForEach\u306e\u30d1\u30e9\u30ec\u30eb\u51e6\u7406"},"content":{"rendered":"<pre class=\"lang:c# decode:true\">        \/\/ \u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\r\n        private List&lt;string&gt; lstData = new List&lt;string&gt; { \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\" };\r\n\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u901a\u5e38\u51e6\u7406\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ &lt;param name=\"sender\"&gt;&lt;\/param&gt;\r\n        \/\/\/ &lt;param name=\"e\"&gt;&lt;\/param&gt;\r\n        private void btnStart_Click(object sender, EventArgs e)\r\n        {\r\n            Console.WriteLine(\"Start:\" + DateTime.Now.ToString(\"HH:mm:ss.ff\"));\r\n            Console.WriteLine(\"For\u6587\");\r\n            for (int intCount = 0; intCount &lt; lstData.Count; intCount++)\r\n            {\r\n                Console.WriteLine(lstData[intCount]);\r\n                System.Threading.Thread.Sleep(300);\r\n            }\r\n\r\n            Console.WriteLine(\"ForEach\u6587\");\r\n            foreach (string strData in lstData)\r\n            {\r\n                Console.WriteLine(strData);\r\n                System.Threading.Thread.Sleep(300);\r\n            }\r\n            Console.WriteLine(\"Finish:\" + DateTime.Now.ToString(\"HH:mm:ss.ff\"));\r\n        }<\/pre>\n<pre class=\"lang:default decode:true\">Start:12:00:32.75\r\nFor\u6587\r\nA\r\nB\r\nC\r\nD\r\nE\r\nF\r\nG\r\nH\r\nI\r\nJ\r\nK\r\nForEach\u6587\r\nA\r\nB\r\nC\r\nD\r\nE\r\nF\r\nG\r\nH\r\nI\r\nJ\r\nK\r\nFinish:12:00:39.36<\/pre>\n<p>&nbsp;<\/p>\n<p>\u3053\u308c\u306bParallel\u3092\u9069\u7528\u3059\u308b\u3068\u3001\u4e0b\u8a18\u306e\u3088\u3046\u306b\u306a\u308b\u3002<\/p>\n<pre class=\"lang:default decode:true\">        \/\/ \u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\r\n        private List&lt;string&gt; lstData = new List&lt;string&gt; { \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\" };\r\n\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u30d1\u30e9\u30ec\u30eb\u51e6\u7406\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ &lt;param name=\"sender\"&gt;&lt;\/param&gt;\r\n        \/\/\/ &lt;param name=\"e\"&gt;&lt;\/param&gt;\r\n        private void btnParallelStart_Click(object sender, EventArgs e)\r\n        {\r\n            Console.WriteLine(\"Start:\" + DateTime.Now.ToString(\"HH:mm:ss.ff\"));\r\n            Console.WriteLine(\"Parallel.For\u6587\");\r\n            Parallel.For(0, lstData.Count, intCount =&gt;\r\n            {\r\n                Console.WriteLine(lstData[intCount]);\r\n                System.Threading.Thread.Sleep(300);\r\n            });\r\n\r\n            Console.WriteLine(\"Parallel.ForEach\u6587\");\r\n            Parallel.ForEach(lstData, strData =&gt;\r\n            {\r\n                Console.WriteLine(strData);\r\n                System.Threading.Thread.Sleep(300);\r\n            });\r\n            Console.WriteLine(\"Finish:\" + DateTime.Now.ToString(\"HH:mm:ss.ff\"));\r\n        }<\/pre>\n<pre class=\"lang:default decode:true\">Start:12:01:43.02\r\nParallel.For\u6587\r\nA\r\nC\r\nD\r\nE\r\nF\r\nG\r\nH\r\nI\r\nJ\r\nB\r\nK\r\nParallel.ForEach\u6587\r\nA\r\nE\r\nD\r\nF\r\nB\r\nG\r\nH\r\nC\r\nI\r\nJ\r\nK\r\nFinish:12:01:44.24<\/pre>\n<p>\u4e26\u5217\u306b\u51e6\u7406\u3092\u884c\u3046\u305f\u3081\u3001\u5168\u4f53\u306e\u51e6\u7406\u901f\u5ea6\u304c\u5411\u4e0a\u3057\u3066\u3044\u308b\u53cd\u9762\u3001\u51e6\u7406\u306e\u9806\u756a\u304c\u30d0\u30e9\u30d0\u30e9\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u306b\u6ce8\u610f\u3055\u308c\u305f\u3044\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u4e26\u5217\u51e6\u7406\u5185\u90e8\u3067Break\u3092\u884c\u3044\u305f\u3044\u5834\u5408\u306f\u4e0b\u8a18\u306e\u3088\u3046\u306b\u306a\u308b\u3002<\/p>\n<pre class=\"lang:c# decode:true\">        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u30d1\u30e9\u30ec\u30eb\u51e6\u7406\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ &lt;param name=\"sender\"&gt;&lt;\/param&gt;\r\n        \/\/\/ &lt;param name=\"e\"&gt;&lt;\/param&gt;\r\n        private void btnParallelStart_Click(object sender, EventArgs e)\r\n        {\r\n            Console.WriteLine(\"Start:\" + DateTime.Now.ToString(\"HH:mm:ss.ff\"));\r\n            Console.WriteLine(\"Parallel.For\u6587\");\r\n            Parallel.For(0, lstData.Count, (intCount, objLoopState) =&gt;\r\n            {\r\n                Console.WriteLine(lstData[intCount]);\r\n\r\n                if (lstData[intCount] == \"G\")\r\n                {\r\n                    objLoopState.Break();\r\n                }\r\n\r\n                System.Threading.Thread.Sleep(300);\r\n            });\r\n\r\n            Console.WriteLine(\"Parallel.ForEach\u6587\");\r\n            Parallel.ForEach(lstData, (strData, objLoopState) =&gt;\r\n            {\r\n                Console.WriteLine(strData);\r\n\r\n                if (strData == \"G\")\r\n                {\r\n                    objLoopState.Break();\r\n                }\r\n\r\n                System.Threading.Thread.Sleep(300);\r\n            });\r\n            Console.WriteLine(\"Finish:\" + DateTime.Now.ToString(\"HH:mm:ss.ff\"));\r\n        }<\/pre>\n<pre class=\"lang:default decode:true\">Start:12:07:37.11\r\nParallel.For\u6587\r\nA\r\nC\r\nB\r\nD\r\nE\r\nF\r\nG\r\nParallel.ForEach\u6587\r\nA\r\nF\r\nD\r\nE\r\nG\r\nB\r\nC\r\nFinish:12:07:37.73<\/pre>\n<p>G\u304c\u51e6\u7406\u3055\u308c\u305f\u30bf\u30a4\u30df\u30f3\u30b0\u3067Break\u3092\u304b\u3051\u3066\u3044\u308b\u304c\u3001\u3059\u3067\u306b\u4e26\u5217\u51e6\u7406\u304c\u8d70\u3063\u3066\u3057\u307e\u3063\u3066\u3044\u308b\u5206\u306b\u95a2\u3057\u3066\u306f\u51e6\u7406\u3055\u308c\u3066\u3057\u307e\u3046\u306e\u3067\u6ce8\u610f\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u307e\u305f\u3001\u5916\u90e8\u306e\u30b9\u30ec\u30c3\u30c9\u304b\u3089\u51e6\u7406\u3092\u4e2d\u65ad\u3059\u308b\u5834\u5408\u306f\u4e0b\u8a18\u306e\u3088\u3046\u306b\u306a\u308b\u3002<\/p>\n<pre class=\"lang:c# decode:true \">        \/\/ \u30c8\u30fc\u30af\u30f3\r\n        private CancellationTokenSource objToken = null;\r\n\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u30d1\u30e9\u30ec\u30eb\u51e6\u7406\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ &lt;param name=\"sender\"&gt;&lt;\/param&gt;\r\n        \/\/\/ &lt;param name=\"e\"&gt;&lt;\/param&gt;\r\n        private async void btnParallelStart_Click(object sender, EventArgs e)\r\n        {\r\n            try\r\n            {\r\n                await Task.Run(() =&gt;\r\n                {\r\n                    \/\/ ParallelOptions\u306e\u69cb\u7bc9\r\n                    objToken = new CancellationTokenSource();\r\n                    ParallelOptions options = new ParallelOptions();\r\n                    options.CancellationToken = objToken.Token;\r\n\r\n                    Console.WriteLine(\"Start:\" + DateTime.Now.ToString(\"HH:mm:ss.ff\"));\r\n                    Console.WriteLine(\"Parallel.For\u6587\");\r\n                    Parallel.For(0, lstData.Count, options, intCount =&gt;\r\n                    {\r\n                        Console.WriteLine(lstData[intCount]);\r\n                        System.Threading.Thread.Sleep(300);\r\n                    });\r\n\r\n                    Console.WriteLine(\"Parallel.ForEach\u6587\");\r\n                    Parallel.ForEach(lstData, options, strData =&gt;\r\n                    {\r\n                        Console.WriteLine(strData);\r\n                        System.Threading.Thread.Sleep(300);\r\n                    });\r\n                    Console.WriteLine(\"Finish:\" + DateTime.Now.ToString(\"HH:mm:ss.ff\"));\r\n                });\r\n            }\r\n            catch (OperationCanceledException ex)\r\n            {\r\n                \/\/ \u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u305f\u969b\u306b\u5165\u308b\u4f8b\u5916\u51e6\u7406\r\n                Console.WriteLine(\"Cancel:\" + DateTime.Now.ToString(\"HH:mm:ss.ff\"));\r\n            }\r\n        }\r\n\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u30d1\u30e9\u30ec\u30eb\u51e6\u7406\u306e\u30ad\u30e3\u30f3\u30bb\u30eb\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ &lt;param name=\"sender\"&gt;&lt;\/param&gt;\r\n        \/\/\/ &lt;param name=\"e\"&gt;&lt;\/param&gt;\r\n        private void btnParallelBreak_Click(object sender, EventArgs e)\r\n        {\r\n            if (objToken != null)\r\n            {\r\n                objToken.Cancel();\r\n            }\r\n        }<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\/\/ \u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf private List&lt;string&gt; lstData = new List&lt;string&gt; { &#8220;A&#8221;, &#8220;B&#8221;, &#8220;C&#8221;, &#8220;D&#8221;, &#8220;E&#8221;, &#8220;F&#8221;, &#8220;G&#8221;, &#8220;H [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,15],"tags":[],"class_list":["post-302","post","type-post","status-publish","format-standard","hentry","category-c","category-15"],"_links":{"self":[{"href":"https:\/\/todosoft.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/todosoft.net\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/todosoft.net\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/todosoft.net\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/todosoft.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=302"}],"version-history":[{"count":2,"href":"https:\/\/todosoft.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/302\/revisions"}],"predecessor-version":[{"id":304,"href":"https:\/\/todosoft.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/302\/revisions\/304"}],"wp:attachment":[{"href":"https:\/\/todosoft.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=302"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/todosoft.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=302"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/todosoft.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}