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

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

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

      Silverlight 異步任務隊列實現

      眾所周知, 在 Silverlight 運行時中, 不允許堵塞 UI 的操作出現, 很多操作只能通過異步實現。 但是, 在 Silverlight 的實際開發工作中, 經常出現需要將多個異步操作按照一定的順序執行, 因而需要一個能夠按照順序執行異步任務的隊列, 下面是一個簡單的設計:

      1. 首先, 我們需要定義一個接口 IAsyncAction , 表示一個異步任務,代碼如下:
        public interface IAsyncAction {
        
           void Execute();
        
           event EventHandler Completed;
        }
        這個接口非常簡單, 調用 Execute 方法執行這個異步任務, 任務完成之后觸發 Completed 事件。
      2. 其次, 提供一個抽象實現 AsyncAction , 提供觸發 Completed 事件的方法,代碼如下:
        public abstract class AsyncAction : IAsyncAction {
        
           public abstract void Execute();
        
           public event EventHandler Completed;
        
           protected void OnCompleted() {
              var completed = this.Completed;
              if (completed != null) {
                 completed(this, EventArgs.Empty);
              }
           }
        }
      3. 再提供一個 AsyncActionRunner ,負責執行多個異步任務,代碼如下:
        public class AsyncActionRunner : AsyncAction {
        
           private readonly IEnumerator < IAsyncAction > _enumerator;
        
           public AsyncActionRunner(IEnumerator < IAsyncAction > enumerator) {
              this._enumerator = enumerator;
           }
        
           public override void Execute() {
              if (this._enumerator.MoveNext()) {
                 this._enumerator.Current.Completed += delegate {
                    this.Execute();
                 };
                 this._enumerator.Current.Execute();
              }
              else {
                 this.OnCompleted();
              }
           }
        }
      4. 最后再提供使用 AsyncActionRunner 的示例代碼:
        // a sample async action
        public class SampleAsyncAction : AsyncAction { }
        
        public class TestAsyncActionRunner {
        
           public IEnumerator < IAsyncAction >  PrepareAsyncTasks() {
              // task 1
              yield return new SampleAsyncAction();
              // and task 2
              yield return new SampleAsyncAction();
              // and more task ...
           }
        
           public void RunAllAsyncTasks() {
              var tasks = this.PrepareAsyncTasks();
              var runner = new AsyncActionRunner(tasks);
              runner.Completed += delegate {
                 Console.WriteLine("All Async task done!");
              };
           }
        }

      有了這樣一個 AsyncActionRunner , 按照指定的順序執行一些異步操作就很容易了, 希望這個想法能對大家有所幫助。

      posted @ 2010-12-24 13:24  張志敏  閱讀(3597)  評論(22)    收藏  舉報
      主站蜘蛛池模板: 久久久久无码精品亚洲日韩 | 91精品国产福利尤物免费| 老司机免费的精品视频| 四虎永久精品在线视频| 中文字幕乱码一区二区免费| 制服 丝袜 亚洲 中文 综合| 亚洲精品福利一区二区三区蜜桃| 无码内射中文字幕岛国片| 亚洲成人四虎在线播放| 国产不卡精品视频男人的天堂| 国产在线观看免费人成视频| 久青草国产在视频在线观看| 99久久机热/这里只有精品| 高清国产美女一级a毛片在线| 精品无码人妻| 粗大挺进朋友人妻淑娟| 欧洲美熟女乱又伦AV影片| 色爱综合另类图片av| 久久青青草原精品国产app| 久久综合开心激情五月天| 国产超碰无码最新上传| 亚洲AV无码秘?蜜桃蘑菇| 日本一区二区三区18岁| 上司的丰满人妻中文字幕| 日韩加勒比一本无码精品| 欧美亚洲国产一区二区三区| 南通市| 久久精品蜜芽亚洲国产AV| 国产亚洲精品第一综合另类| 亚洲国产成熟视频在线多多 | 中文字幕亚洲男人的天堂网络| 国产成人无码A区在线观看视频 | 激情动态图亚洲区域激情| 国产高清精品在线91| 国产精品久久国产丁香花| 国产成人精品中文字幕| 国产成人综合色就色综合| 欧洲人与动牲交α欧美精品| 亚洲丰满熟女一区二区v| av无码小缝喷白浆在线观看| 寿光市|