2010-11-18 52 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

相关问题