我最近读了很多关于异步编程的内容,因为我需要创建一个多线程应用程序.
不幸的是,我似乎无法将我新获得的知识整合到一个有凝聚力和有用的单元中!
我希望有人可以给我一些关于如何构建以下内容的指示:
我有一个类,它按指定的顺序执行许多不同的(和耗时的)任务.
我想在Winforms UI线程中实例化这个类.例如:
TaskRunner tr = new TaskRunner();
我希望能够调用BeginAsync()方法(就像你可以使用许多.NET内置对象一样).例如:
tr.BeginAsync();
我希望我的类在某些事件发生时回调到我的UI线程(用于记录,完成等).
我希望能够取消我班级的执行.例如:
tr.CancelAsync();
我如何建立该类的内部?我似乎无法找到任何有关SqlCommand或WebRequest内部如何工作的内容.
对于此操作,您希望使用基于事件的异步模式(而不是IAsyncResult设计模式).有关详细信息,请参阅位于以下位置的标题为"基于事件的异步模式概述"的MSDN文档部分:
http://msdn.microsoft.com/en-us/library/wewwczdw.aspx