<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Task 編程中的異常處理

      在 .Net 開發中, 使用 Task 、 Task<T> 進行異步編程是非常方便的, 但是在處理 Task 產生的異常時, 需要注意一個問題, 比如下面的代碼:

      static Task<int> TestAsync(int a, int b) {
         var tcs = new TaskCompletionSource<int>();
         Task.Factory.StartNew(() => {
            if (a + b < 0) {
               tcs.TrySetException(new InvalidOperationException("a + b < 0"));
            }
            else {
               tcs.TrySetResult(a + b);
            }
         });
         return tcs.Task;
      }

      當輸入的兩個參數之和小于 0 時, tcs 會設置一個 InvalidOperationException , 如果直接運行這段代碼, 當這個函數返回的 Task 被 GC 回收時, 將會產生 AggregateException was unhandled 的異常, 運行代碼如下:

      static void Main(string[] args) {
      
         TestAsync(5, -10);
      
         Thread.Sleep(TimeSpan.FromMilliseconds(3000));
      
         GC.Collect();
      
         Console.WriteLine("Completed.");
      }

      當程序運行結束時, 會產生下圖所示的異常:

      2012-07-05_130006

      關鍵的是這段文字:

      A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread.

      沒有在等待 Task 完成時捕獲其異常, 也沒有讀取 Task 的 Exception 屬性, 結果導致異常被終結線程重新拋出。 也就是說, Task 異常有兩種處理方式:

      1、 調用 Task 的 Wait 方法時使用 try-catch 捕獲異常:

      var testTask = TestAsync(5, -10);
      try {
         testTask.Wait();
      }
      catch(Exception ex) {
         Console.WriteLine(ex);
      }

      2、 在 Task 的 ContinueWith 方法中讀取 Task 的 Exception 屬性:

      var testTask = TestAsync(5, -10);
      testTask.ContinueWith(task => {
         if (task.IsFaulted) {
            Console.WriteLine(task.Exception.GetBaseException());
         }
         else {
            Console.WriteLine(task.Result);
         }
      });

      在 .Net 4.0 、 Sliverlight 5.0 、以及 MonoTouch 中均有類似的問題, 因此, 必須小心翼翼的處理 Task 產生的異常, 否則將會導致你的程序異常退出。

      posted @ 2012-07-05 13:53  張志敏  閱讀(10078)  評論(8)    收藏  舉報
      主站蜘蛛池模板: 国内精品伊人久久久久av| 精品无码人妻一区二区三区| 日韩精品中文字幕有码| 亚洲中文字幕伊人久久无码| 亚洲欧美日韩成人综合一区| 国产成人综合95精品视频| 亚洲日韩日本中文在线| 国产精品普通话国语对白露脸| 亚洲精品国产av成拍色拍个| 99热国产这里只有精品9| 國產尤物AV尤物在線觀看| 东方av四虎在线观看| 国产精品久久久久久无毒不卡| 国产日韩精品免费二三氏| 国产精品论一区二区三区| 亚洲男人的天堂久久香蕉| 国产熟女高潮一区二区三区 | 国产好大好硬好爽免费不卡 | 中文字幕国产精品av| 亚洲免费成人av一区| 国产精品亚洲欧美大片在线看| 粉嫩jk制服美女啪啪| 国产三级国产精品久久成人| 精品国产乱码久久久久乱码| 伊人春色激情综合激情网| 噜妇插内射精品| 久久99精品久久久久久| 日韩中文字幕一二三视频| 国产玖玖视频| 干老熟女干老穴干老女人| 国产精品欧美福利久久| 久久久av波多野一区二区| 欧美日韩v| 无码国产69精品久久久久网站| 精品人妻一区二区| 激情内射亚州一区二区三区爱妻| 久久青草国产精品一区| √天堂资源地址在线官网| 亚洲国产精品综合色在线| 国产一区日韩二区三区| 亚洲伊人久久综合影院|