net異步操作總結(jié)和比較
以下是個人理解:
Compute 主要指的是CPU密集型或者是其他計算密集型的操作
I/O 這里指的是操作文件或者網(wǎng)絡(luò)等適用的異步情況
父子依賴指的是 一個任務(wù)是不是依賴于其他任務(wù)的狀態(tài)而執(zhí)行(例如A任務(wù)完成取消或者異常的時候 B任務(wù)執(zhí)行)
取消: 一個任務(wù)開始以后是否能夠被終止
等待:能否block住當(dāng)前線程以等待異步操作的完成(是否有內(nèi)置功能支持)
超時:能否對異步任務(wù)設(shè)置超時時間
返回值和異常:能否處理異步任務(wù)的返回值和異常(是否有內(nèi)置功能支持)
|
異步方式 |
主要應(yīng)用 |
Emulate Secondary via What?
|
父子依賴關(guān)系 |
進(jìn)度報告 |
取消 |
等待 |
超時 |
返回值和異常 |
|
QueueUserWorkItem |
Compute |
Sync I/O |
NO |
NO |
NO |
NO |
NO |
NO |
|
Timer |
Compute |
Sync I/O |
NO |
NO |
Dispose 方法 |
NO |
YES |
NO |
|
RegisterWaitForSingleObject |
Compute |
Sync I/O |
NO |
NO |
注銷事件 |
NO |
YES |
NO |
|
Tasks |
Compute |
Sync I/O TaskComletionSource
Task.Scheduler的 FromAsync |
YES |
NO |
應(yīng)用于Compute的時候要早于Task啟動或者Task支持取消方法 應(yīng)用于I/O:丟棄結(jié)果 |
YES |
YES |
YES |
|
IAsyncResult |
I/O |
Delegate.BeginInvoke |
NO |
NO |
NO |
YES |
NO |
YES |
|
Event-Base |
I/O |
BackgroundWorker |
NO |
SOME |
有些類型支持丟棄結(jié)果 |
NO |
NO |
YES |
|
AsyncEnumerator |
I/O |
Delegate.BeginInvoke |
NO |
NO |
YES |
NO |
YES |
YES |
浙公網(wǎng)安備 33010602011771號