Silverlight 非同步任務佇列實現

2021-09-22 06:42:58 字數 2599 閱讀 7680

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

首先, 我們需要定義乙個介面 iasyncaction , 表示乙個非同步任務,**如下:

12

3

4

5

6

publicinte***ceiasyncaction

這個介面非常簡單, 呼叫 execute 方法執行這個非同步任務, 任務完成之後觸發 completed 事件。

其次, 提供乙個抽象實現 asyncaction , 提供觸發 completed 事件的方法,**如下:

12

3

4

5

6

7

8

9

10

11

12

13

publicabstractclassasyncaction : iasyncaction

}

}

再提供乙個 asyncactionrunner ,負責執行多個非同步任務,**如下:

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

publicclassasyncactionrunner : asyncaction

publicoverridevoidexecute() ;

this._enumerator.current.execute();

}

else

}

}

最後再提供使用 asyncactionrunner 的示例**:

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

// a sample async action

publicclasssampleasyncaction : asyncaction

publicclasstestasyncactionrunner

publicvoidrunallasynctasks() ;

}

}

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

非同步 非同步任務

非同步任務 記錄一下學習完springboot後進行使用非同步方法時的筆記 service層 author yesijie date 2019 11 29 15 25 service public class asyncc catch interruptedexception e system.ou...

Silverlight 非同步單元測試

silverlight 中的很多操作都是非同步的,很多情況下要求單元測試也是非同步的,但是介紹非同步單元測試的文件很少。通過對 silverlight toolkit 中的 microsoft.silverlight.testing 和 microsoft.visualstudio.qualityt...

silverlight非同步陷阱(二)迴圈

由於非同步完成事件不能確定,順序也不能確定,如果把非同步操作放到迴圈內,可能會產生意想不到的結果。下面的程式本意是 迴圈items集合,為每個item賦值。foreach bookrankitem item in items service.loaded bookpagehander service...