2010-11-18 55 views
4

嗨我想實現基於事件的異步模式使用C#。下面的Microsoft文檔非常有幫助,但很正確,它遺漏了實現細節。我將如何去實現基於事件的異步模式?

http://msdn.microsoft.com/en-us/library/ms228969.aspx

什麼是我實現這個模式的選擇嗎?我應該使用Delegate.BeginInvoke,ThreadPool.QueueUserWorkItem,新的Thread(),BackgroundWorker類還是其他?

我正在創建一個簡單的代碼庫。它應該可以在Windows窗體,控制檯應用程序或ASP.NET上下文中使用。

很高興看到一些示例代碼。

+0

您鏈接到該頁面包含了一個鏈接[「如何實現......」 ](http://msdn.microsoft.com/en-us/library/e7a34yad.aspx),有關更多詳細信息,您需要說出您需要什麼/如何。 – 2010-11-18 13:23:34

回答

1

閱讀本文的這一部分:

http://msdn.microsoft.com/en-us/library/9hk12d4y.aspx

話雖這麼說,我會建議你使用這項技術依賴於你的應用程序,所以沒有什麼這些異步操作會做更多的細節以及他們多久會被打電話以及他們在什麼情況下被打電話,我無法推薦您使用何種最佳技術。

+0

異步操作將進行一些簡單的處理。異步操作不會錘擊任何資源(db,文件系統等)。它不會經常打電話。你給的例子使用AsyncOperationManager類。桌上似乎有很多選項。你用什麼標準來決定你的方法? – 2010-11-18 14:00:08

+0

我會做最簡單的事情(通常最容易維護),以完成我需要的性能。通常BackgroundWorker。 – 2010-11-18 14:28:55

4

如果你想實現基於事件的異步模式,那麼AsyncFunc是最簡單的方法。

它大大簡化了這個模式。你不需要麻煩ThreadPools,Threads或BackgroundWorkers。 AsyncFunc爲你處理所有事情。而且,這種方法允許您將業務邏輯與特定於模式的實現分開,從而提高可測試性。

http://asyncfunc.codeplex.com

你可以找到MSDN比較推薦的方法和AsyncFunc執行相同成分的:

MSDN vs. AsyncFunc

+0

有趣的鏈接,thx。 – leppie 2011-01-11 04:35:11

相關問題