眾所周知, 在 silverlight 執行時中, 不允許堵塞 ui 的操作出現, 很多操作只能通過非同步實現。 但是, 在 silverlight 的實際開發工作中, 經常出現需要將多個非同步操作按照一定的順序執行, 因而需要乙個能夠按照順序執行非同步任務的佇列, 下面是乙個簡單的設計:
首先, 我們需要定義乙個介面 iasyncaction , 表示乙個非同步任務,**如下:
12
3
4
5
6
public
inte***ce
iasyncaction
這個介面非常簡單, 呼叫 execute 方法執行這個非同步任務, 任務完成之後觸發 completed 事件。
其次, 提供乙個抽象實現 asyncaction , 提供觸發 completed 事件的方法,**如下:
12
3
4
5
6
7
8
9
10
11
12
13
public
abstract
class
asyncaction : iasyncaction
}
}
再提供乙個 asyncactionrunner ,負責執行多個非同步任務,**如下:
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public
class
asyncactionrunner : asyncaction
public
override
void
execute() ;
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
public
class
sampleasyncaction : asyncaction
public
class
testasyncactionrunner
public
void
runallasynctasks() ;
}
}
有了這樣乙個 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...