{"id":8895,"date":"2011-05-14T22:20:00","date_gmt":"2011-05-14T20:20:00","guid":{"rendered":"https:\/\/fatihboy.com\/post\/async-ctp-daha-verimli-await"},"modified":"2011-05-14T22:20:00","modified_gmt":"2011-05-14T20:20:00","slug":"async-ctp-daha-verimli-await","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/async-ctp-daha-verimli-await\/","title":{"rendered":"Async CTP G\u00fcncellemesi : Daha verimli bir await"},"content":{"rendered":"<p>&nbsp;&nbsp; Hat\u0131rlarsan\u0131z bir s\u00fcre \u00f6nce size <a href=\"\/en\/?p=8479\">Visual Studio Async CTP<\/a>&#8216;nin \u00e7\u0131k\u0131\u015f\u0131n\u0131 duyurmu\u015ftum, tabi ki bunun bir topluluk teknik \u00f6n izleme oldu\u011funun da alt\u0131n\u0131 \u00e7izerek. Teknik \u00f6n izlemeler&nbsp; geli\u015fmeleri yak\u0131ndan takip eden yaz\u0131l\u0131m geli\u015ftiricilere gelecekte \u015fekillenecek olan teknolojileri inceleme f\u0131rsat\u0131 vermekte; ama unutmamak gerekir ki kesinlikle ilgili teknolojinin son hali de\u011fillerdir. Async CTP\u2019de tabi ki buna bir istisna de\u011fil ve yaz\u0131l\u0131m geli\u015ftiricilerden gelen geri bildirimler sonras\u0131nda geli\u015fmeye ve yenilenmeye devam etmekte. Bu yaz\u0131mda async ctp g\u00fcncellemesi sonras\u0131nda await\u2019in nas\u0131l daha verimli hale geldi\u011fini payla\u015f\u0131yor olaca\u011f\u0131m.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Yak\u0131n zaman \u00f6nce Visual Studio SP1\u2019in \u00e7\u0131kmas\u0131yla async ctp kullan\u0131c\u0131lar maalesef ki bu \u00f6n izlemeyi kullanamaz hale gelmi\u015fti. Bu durum ise <a href=\"\/en\/?p=8845\">yay\u0131nlanan bir tazeleme paketi<\/a> ile d\u00fczeltilmi\u015fti. Bu tazeleme paketi pek \u00e7oklar\u0131 i\u00e7in k\u00fct\u00fcphanenin Visual Studio SP1 k\u00fct\u00fcphaneleri ile yeniden derlenmi\u015f olan bir s\u00fcr\u00fcm\u00fc olarak d\u00fc\u015f\u00fcn\u00fclse de asl\u0131nda bu buz da\u011f\u0131n\u0131n sadece g\u00f6r\u00fcnen y\u00fcz\u00fcyd\u00fc. Ger\u00e7ekte, beraberinden tasar\u0131mda da \u00f6nemli g\u00fcncellemeler yap\u0131ld\u0131. Bu yaz\u0131mda birlikte await i\u00e7erisinde yap\u0131lan g\u00fcncellemeyi inceliyor olaca\u011f\u0131z.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Hat\u0131rlayacak olursan\u0131z <a href=\"\/en\/?p=8479\">Visual Studio Async CTP<\/a> yaz\u0131mda konunun peki\u015fmesi i\u00e7in sizlerle a\u015fa\u011f\u0131daki \u00f6rnek kodu payla\u015fm\u0131\u015ft\u0131m;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">private async void adresleriBul_Click(object sender, EventArgs e) {\n    var adress = \"https:\/\/fatihboy.com\/\";\n    var icerik = await new WebClient().DownloadStringTaskAsync(adress);\n    var eslesimler = Regex.Matches(icerik,\n                        @\"(?&lt;Protocol>\\w+):\\\/\\\/(?&lt;Domain>[\\w@][\\w.:@]+)\\\/?[\\w\\.?=%&amp;=\\-@\/$,]*\",\n                        RegexOptions.IgnoreCase);\n \n    foreach (Match eslesim in eslesimler) {\n        adresListesi.Items.Add(eslesim.Value);\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Bu kodun derlenmesi sonras\u0131nda ise a\u015fa\u011f\u0131daki hale d\u00f6n\u00fc\u015fm\u00fc\u015ft\u00fc;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">private void adresleriBul_Click(object sender, EventArgs e) {\n    &lt;adresleriBul_Click>d__0 d__ = new &lt;adresleriBul_Click>d__0(0);\n    d__.&lt;>4__this = this;\n    d__.sender = sender;\n    d__.e = e;\n    d__.MoveNextDelegate = new Action(d__.MoveNext);\n    d__.$builder = VoidAsyncMethodBuilder.Create();\n    d__.MoveNext();\n}\n \n[CompilerGenerated]\nprivate sealed class &lt;adresleriBul_Click>d__0 {\n    private bool $__disposing;\n    private bool $__doFinallyBodies;\n    public VoidAsyncMethodBuilder $builder;\n    private int &lt;>1__state;\n    public EventArgs &lt;>3__e;\n    public object &lt;>3__sender;\n    public AnaEkran &lt;>4__this;\n    private string &lt;1>t__$await5;\n    private TaskAwaiter&lt;string> &lt;a1>t__$await6;\n    public string &lt;adress>5__1;\n    public Match &lt;eslesim>5__4;\n    public MatchCollection &lt;eslesimler>5__3;\n    public string &lt;icerik>5__2;\n    public EventArgs e;\n    public Action MoveNextDelegate;\n    public object sender;\n \n    [DebuggerHidden]\n    public &lt;adresleriBul_Click>d__0(int &lt;>1__state) {\n        this.&lt;>1__state = &lt;>1__state;\n    }\n \n    [DebuggerHidden]\n    public void Dispose() {\n        this.$__disposing = true;\n        this.MoveNext();\n        this.&lt;>1__state = -1;\n    }\n \n    public void MoveNext() {\n        try {\n            this.$__doFinallyBodies = true;\n            if (this.&lt;>1__state != 1) {\n                if (this.&lt;>1__state == -1) {\n                    return;\n                }\n \n                this.&lt;adress>5__1 = \"https:\/\/fatihboy.com\/\";\n                this.&lt;a1>t__$await6 = new WebClient().DownloadStringTaskAsync(this.&lt;adress>5__1).GetAwaiter&lt;string>();\n                this.&lt;>1__state = 1;\n                this.$__doFinallyBodies = false;\n                if (this.&lt;a1>t__$await6.BeginAwait(this.MoveNextDelegate)) {\n                    return;\n                }\n                this.$__doFinallyBodies = true;\n            }\n \n            this.&lt;>1__state = 0;\n            this.&lt;1>t__$await5 = this.&lt;a1>t__$await6.EndAwait();\n            this.&lt;icerik>5__2 = this.&lt;1>t__$await5;\n            this.&lt;eslesimler>5__3 = Regex.Matches(this.&lt;icerik>5__2,\n                           @\"(?&lt;Protocol>\\w+):\\\/\\\/(?&lt;Domain>[\\w@][\\w.:@]+)\\\/?[\\w\\.?=%&amp;=\\-@\/$,]*\",\n   RegexOptions.IgnoreCase);\n            IEnumerator CS$5$0002 = this.&lt;eslesimler>5__3.GetEnumerator();\n            try {\n                while (CS$5$0002.MoveNext()) {\n                    this.&lt;eslesim>5__4 = (Match) CS$5$0002.Current;\n                    this.&lt;>4__this.adresListesi.Items.Add(this.&lt;eslesim>5__4.Value);\n                }\n            }\n            finally {\n                if (this.$__doFinallyBodies) {\n                    IDisposable CS$0$0003 = CS$5$0002 as IDisposable;\n                    if (CS$0$0003 != null) {\n                        CS$0$0003.Dispose();\n                    }\n                }\n            }\n            this.&lt;>1__state = -1;\n            this.$builder.SetCompleted();\n        }\n        catch (Exception) {\n            this.&lt;>1__state = -1;\n            this.$builder.SetCompleted();\n            throw;\n        }\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Async CTP g\u00fcncellemesi sonras\u0131nda ise Async ekibi taraf\u0131ndan tasar\u0131mda yap\u0131lan baz\u0131 de\u011fi\u015fiklikler sonras\u0131nda art\u0131k kar\u015f\u0131m\u0131za a\u015fa\u011f\u0131da gibi farkl\u0131 bir kod \u00e7\u0131kmakta;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">private void adresleriBul_Click(object sender, EventArgs e)\n{\n    &lt;adresleriBul_Click>d__0 d__ = new &lt;adresleriBul_Click>d__0(0);\n    d__.&lt;>4__this = this;\n    d__.sender = sender;\n    d__.e = e;\n    d__.&lt;>t__MoveNextDelegate = new Action(d__.MoveNext);\n    d__.$builder = AsyncVoidMethodBuilder.Create();\n    d__.MoveNext();\n}\n \n[CompilerGenerated]\nprivate sealed class &lt;adresleriBul_Click>d__0\n{\n    \/\/ Fields\n    private bool $__disposing;\n    public AsyncVoidMethodBuilder $builder;\n    private int &lt;>1__state;\n    public EventArgs &lt;>3__e;\n    public object &lt;>3__sender;\n    public MainForm &lt;>4__this;\n    public Action &lt;>t__MoveNextDelegate;\n    private TaskAwaiter&lt;string> &lt;a1>t__$await6;\n    public string &lt;adress>5__1;\n    public Match &lt;eslesim>5__4;\n    public MatchCollection &lt;eslesimler>5__3;\n    public string &lt;icerik>5__2;\n    public EventArgs e;\n    public object sender;\n \n    \/\/ Methods\n    [DebuggerHidden]\n    public &lt;adresleriBul_Click>d__0(int &lt;>1__state)\n    {\n        this.&lt;>1__state = &lt;>1__state;\n    }\n \n    [DebuggerHidden]\n    public void Dispose()\n    {\n        this.$__disposing = true;\n        this.MoveNext();\n        this.&lt;>1__state = -1;\n    }\n \n    public void MoveNext()\n    {\n        try\n        {\n            string &lt;1>t__$await5;\n            bool $__doFinallyBodies = true;\n            if (this.&lt;>1__state != 1)\n            {\n                if (this.&lt;>1__state != -1)\n                {\n                    this.&lt;adress>5__1 = \"https:\/\/fatihboy.com\/\";\n                    this.&lt;a1>t__$await6 = new WebClient().DownloadStringTaskAsync(this.&lt;adress>5__1).GetAwaiter&lt;string>();\n                    if (this.&lt;a1>t__$await6.IsCompleted)\n                    {\n                        goto Label_0089;\n                    }\n                    this.&lt;>1__state = 1;\n                    $__doFinallyBodies = false;\n                    this.&lt;a1>t__$await6.OnCompleted(this.&lt;>t__MoveNextDelegate);\n                }\n                return;\n            }\n            this.&lt;>1__state = 0;\n        Label_0089:\n            &lt;1>t__$await5 = this.&lt;a1>t__$await6.GetResult();\n            this.&lt;a1>t__$await6 = new TaskAwaiter&lt;string>();\n            this.&lt;icerik>5__2 = &lt;1>t__$await5;\n            this.&lt;eslesimler>5__3 = Regex.Matches(this.&lt;icerik>5__2, @\"(?&lt;Protocol>\\w+):\\\/\\\/(?&lt;Domain>[\\w@][\\w.:@]+)\\\/?[\\w\\.?=%&amp;=\\-@\/$,]*\", RegexOptions.IgnoreCase);\n            IEnumerator CS$5$0003 = this.&lt;eslesimler>5__3.GetEnumerator();\n            try\n            {\n                while (CS$5$0003.MoveNext())\n                {\n                    this.&lt;eslesim>5__4 = (Match) CS$5$0003.Current;\n                    this.&lt;>4__this.adresListesi.Items.Add(this.&lt;eslesim>5__4.Value);\n                }\n            }\n            finally\n            {\n                if ($__doFinallyBodies)\n                {\n                    IDisposable CS$0$0004 = CS$5$0003 as IDisposable;\n                    if (CS$0$0004 != null)\n                    {\n                        CS$0$0004.Dispose();\n                    }\n                }\n            }\n        }\n        catch (Exception &lt;>t__ex)\n        {\n            this.&lt;>1__state = -1;\n            this.$builder.SetException(&lt;>t__ex);\n            return;\n        }\n        this.&lt;>1__state = -1;\n        this.$builder.SetResult();\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Daha detaya inecek olursak a\u015fa\u011f\u0131daki iki kod par\u00e7ac\u0131\u011f\u0131n\u0131 inceleyebiliriz. \u0130lk s\u00fcr\u00fcmde olu\u015fan kod;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">if (this.&lt;>1__state != 1) {\n    if (this.&lt;>1__state == -1) {\n        return;\n    }\n \n    this.&lt;adress>5__1 = \"https:\/\/fatihboy.com\/\";\n    this.&lt;a1>t__$await6 = new WebClient().DownloadStringTaskAsync(this.&lt;adress>5__1).GetAwaiter&lt;string>();\n    this.&lt;>1__state = 1;\n    this.$__doFinallyBodies = false;\n    if (this.&lt;a1>t__$await6.BeginAwait(this.MoveNextDelegate)) {\n        return;\n    }\n    this.$__doFinallyBodies = true;\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Async CTP g\u00fcncellemesi sonras\u0131nda olu\u015fan kod;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">if (this.&lt;>1__state != 1){\n    if (this.&lt;>1__state != -1) {\n        this.&lt;adress>5__1 = \"https:\/\/fatihboy.com\/\";\n        this.&lt;a1>t__$await6 = new WebClient().DownloadStringTaskAsync(this.&lt;adress>5__1).GetAwaiter&lt;string>();\n        if (this.&lt;a1>t__$await6.IsCompleted) {\n            goto Label_0089;\n        }\n        this.&lt;>1__state = 1;\n        $__doFinallyBodies = false;\n        this.&lt;a1>t__$await6.OnCompleted(this.&lt;>t__MoveNextDelegate);\n    }\n    return;\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Hmm, bu noktada kod sat\u0131rlar\u0131 aras\u0131nda kaybolmu\u015f olabilirsiniz. \u0130sterseniz olu\u015fan her iki kodu da biraz sadele\u015ftirelim.<\/p>\n\n\n\n<p>\u0130lk s\u00fcr\u00fcm;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var geciciDegisken = yapilacakIslem.GetAwaiter();\n\/\/ .....\n\/\/ DURUMU SAKLA\n\/\/ .....\nif (geciciDegisken.BeginAwait(devami)){\n    return;\n}\n\ndevami:\n\/\/ .....\n\/\/ DURUMU GERI YUKLE\n\/\/ .....\nvar sonuc = geciciDegisken.EndAwait();<\/pre>\n\n\n\n<p>Async CTP g\u00fcncellemesi sonras\u0131;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var geciciDegisken = yapilacakIslem.GetAwaiter();\nif (!geciciDegisken.IsCompleted){\n    \/\/ .....\n    \/\/ DURUMU SAKLA\n    \/\/ .....\n    geciciDegisken.OnCompleted(devami);\n    return;\n\n    devami:\n    \/\/ .....\n    \/\/DURUMU GERI YUKLE\n    \/\/ .....\n}\nvar sonuc = geciciDegisken.GetResult();\nsonuc = null;<\/pre>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Bu iki kod aras\u0131ndaki temel farkl\u0131k; yeni y\u00f6ntemde art\u0131k nesnenin durumu saklanmadan \u00f6nce verilen i\u015fin bitip bitmedi\u011fi kontrol edilmesi. \u00d6rne\u011fimizde yer alan web sayfas\u0131n\u0131n indirilmesi i\u015fini d\u00fc\u015f\u00fcn\u00fcn; yava\u015f bir internet ba\u011flant\u0131s\u0131nda s\u00fcrecin asenkron i\u015flemesi en mant\u0131kl\u0131 oland\u0131r. Uygulama h\u0131zl\u0131 bir internet ba\u011flant\u0131s\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda ise sayfan\u0131n indirilme s\u00fcresi g\u00f6z ard\u0131 edilecek kadar k\u0131sa olacakt\u0131r; ki bu durumda ilk kod BeginAwait \u00e7a\u011fr\u0131s\u0131ndan \u00e7\u0131k\u0131ld\u0131\u011f\u0131nda i\u015flem sonlanm\u0131\u015f olabilir fakat uygulama \u00e7oktan durum bilgisini saklam\u0131\u015f olacakt\u0131r ve kodun devam\u0131nda bu bilgiyi geri y\u00fckleyecektir. Bu sebeple \u00fcretilen kodun tasar\u0131m\u0131 g\u00fcncellenmi\u015f ve ikinci kodda g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi ilk \u00f6nce s\u00fcrecin tamamlan\u0131p tamamlanmad\u0131\u011f\u0131 kontrol edilmi\u015ftir. \u00dcstelik g\u00fcncelleme sonras\u0131nda art\u0131k delegate sadece gerekti\u011fi zaman olu\u015fturularak heap i\u015flemlerinden de kazan\u0131lan ekstra bir zaman s\u00f6z konusudur.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Bu yeni tasar\u0131m\u0131yla Async CTP art\u0131k h\u0131zla sonlanan i\u015flemler i\u00e7in neredeyse senkron olarak \u00e7al\u0131\u015facak ve nesnenin durum bilgisini saklamak\/geri y\u00fcklemekle zaman kaybetmeyecek; i\u015fin uzun s\u00fcrmesi durumunda ise standart hareket ederek s\u00fcrecin asenkron \u00e7al\u0131\u015fmas\u0131 sa\u011flanacakt\u0131r. Yaz\u0131l\u0131m geli\u015ftiriciler a\u00e7\u0131s\u0131ndan bu yeni tasar\u0131m hayat\u0131 daha da kolayla\u015ft\u0131racak gibi g\u00f6r\u00fcn\u00fcyor.<\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; Hat\u0131rlarsan\u0131z bir s\u00fcre \u00f6nce size Visual Studio Async CTP&#8216;nin \u00e7\u0131k\u0131\u015f\u0131n\u0131 duyurmu\u015ftum, tabi ki bunun bir topluluk teknik \u00f6n izleme oldu\u011funun da alt\u0131n\u0131 \u00e7izerek. Teknik \u00f6n izlemeler&nbsp; geli\u015fmeleri yak\u0131ndan takip eden yaz\u0131l\u0131m geli\u015ftiricilere gelecekte \u015fekillenecek olan teknolojileri inceleme f\u0131rsat\u0131 vermekte; ama unutmamak gerekir ki kesinlikle ilgili teknolojinin son hali de\u011fillerdir. Async CTP\u2019de tabi ki buna&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/async-ctp-daha-verimli-await\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":8910,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77,28],"tags":[113,41],"class_list":["post-8895","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-csharp","category-turkce","tag-async","tag-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Async CTP G\u00fcncellemesi : Daha verimli bir await - Fatih Boy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihboy.com\/en\/async-ctp-daha-verimli-await\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Async CTP G\u00fcncellemesi : Daha verimli bir await - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"&nbsp;&nbsp; Hat\u0131rlarsan\u0131z bir s\u00fcre \u00f6nce size Visual Studio Async CTP&#8216;nin \u00e7\u0131k\u0131\u015f\u0131n\u0131 duyurmu\u015ftum, tabi ki bunun bir topluluk teknik \u00f6n izleme oldu\u011funun da alt\u0131n\u0131 \u00e7izerek. Teknik \u00f6n izlemeler&nbsp; geli\u015fmeleri yak\u0131ndan takip eden yaz\u0131l\u0131m geli\u015ftiricilere gelecekte \u015fekillenecek olan teknolojileri inceleme f\u0131rsat\u0131 vermekte; ama unutmamak gerekir ki kesinlikle ilgili teknolojinin son hali de\u011fillerdir. Async CTP\u2019de tabi ki buna...Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/async-ctp-daha-verimli-await\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2011-05-14T20:20:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/05\/efficient_thumb.png\" \/>\n\t<meta property=\"og:image:width\" content=\"209\" \/>\n\t<meta property=\"og:image:height\" content=\"208\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fatih Boy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Boy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"Async CTP G\u00fcncellemesi : Daha verimli bir await\",\"datePublished\":\"2011-05-14T20:20:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/\"},\"wordCount\":622,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/05\/efficient_thumb.png\",\"keywords\":[\"Async\",\"C#\"],\"articleSection\":[\"C#\",\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/\",\"url\":\"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/\",\"name\":\"Async CTP G\u00fcncellemesi : Daha verimli bir await - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/05\/efficient_thumb.png\",\"datePublished\":\"2011-05-14T20:20:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/05\/efficient_thumb.png\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/05\/efficient_thumb.png\",\"width\":209,\"height\":208},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Async CTP G\u00fcncellemesi : Daha verimli bir await\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihboy.com\/#website\",\"url\":\"https:\/\/fatihboy.com\/\",\"name\":\"Fatih Boy\",\"description\":\"Ki\u015fisel Web Sitesi\",\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihboy.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\",\"name\":\"Fatih Boy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"caption\":\"Fatih Boy\"},\"logo\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/fatihboy.com\"],\"url\":\"https:\/\/fatihboy.com\/en\/author\/fatih\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Async CTP G\u00fcncellemesi : Daha verimli bir await - Fatih Boy","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihboy.com\/en\/async-ctp-daha-verimli-await\/","og_locale":"en_US","og_type":"article","og_title":"Async CTP G\u00fcncellemesi : Daha verimli bir await - Fatih Boy","og_description":"&nbsp;&nbsp; Hat\u0131rlarsan\u0131z bir s\u00fcre \u00f6nce size Visual Studio Async CTP&#8216;nin \u00e7\u0131k\u0131\u015f\u0131n\u0131 duyurmu\u015ftum, tabi ki bunun bir topluluk teknik \u00f6n izleme oldu\u011funun da alt\u0131n\u0131 \u00e7izerek. Teknik \u00f6n izlemeler&nbsp; geli\u015fmeleri yak\u0131ndan takip eden yaz\u0131l\u0131m geli\u015ftiricilere gelecekte \u015fekillenecek olan teknolojileri inceleme f\u0131rsat\u0131 vermekte; ama unutmamak gerekir ki kesinlikle ilgili teknolojinin son hali de\u011fillerdir. Async CTP\u2019de tabi ki buna...Read More","og_url":"https:\/\/fatihboy.com\/en\/async-ctp-daha-verimli-await\/","og_site_name":"Fatih Boy","article_published_time":"2011-05-14T20:20:00+00:00","og_image":[{"width":209,"height":208,"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/05\/efficient_thumb.png","type":"image\/png"}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"Async CTP G\u00fcncellemesi : Daha verimli bir await","datePublished":"2011-05-14T20:20:00+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/"},"wordCount":622,"commentCount":0,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/05\/efficient_thumb.png","keywords":["Async","C#"],"articleSection":["C#","T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/","url":"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/","name":"Async CTP G\u00fcncellemesi : Daha verimli bir await - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/05\/efficient_thumb.png","datePublished":"2011-05-14T20:20:00+00:00","breadcrumb":{"@id":"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/05\/efficient_thumb.png","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/05\/efficient_thumb.png","width":209,"height":208},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/async-ctp-daha-verimli-await\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"Async CTP G\u00fcncellemesi : Daha verimli bir await"}]},{"@type":"WebSite","@id":"https:\/\/fatihboy.com\/#website","url":"https:\/\/fatihboy.com\/","name":"Fatih Boy","description":"Ki\u015fisel Web Sitesi","publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihboy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158","name":"Fatih Boy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","caption":"Fatih Boy"},"logo":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/fatihboy.com"],"url":"https:\/\/fatihboy.com\/en\/author\/fatih\/"}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/8895","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/comments?post=8895"}],"version-history":[{"count":0,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/8895\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media\/8910"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=8895"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=8895"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=8895"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}