一、并行基础
许多个人计算机和工作站都有两个或四个内核(即 CPU),使多个线程能够同时执行。 在不久的将来,计算机预期会有更多的内核。 为了利用当今和未来的硬件,您可以对代码进行并行化,以将工作分摊在多个处理器上。 过去,并行化需要线程和锁的低级操作。 Visual Studio 2010 和 .NET Framework 4 提供了新的运行时、新的类库类型以及新的诊断工具,从而增强了对并行编程的支持。 这些功能简化了并行开发,使您能够通过固有方法编写高效、细化且可伸缩的并行代码,而不必直接处理线程或线程池。 下图从较高层面上概述了 .NET Framework 4 中的并行编程体系结构。
二、异步编程设计模式
使用多种方式可向客户端代码公开异步功能。
基于事件的异步模式为类规定了一种用于呈现异步行为的建议方式。
IAsyncResult 接口
表示异步操作的状态
'声明 <ComVisibleAttribute(
True)> _
Public Interface IAsyncResult
'用法 Dim instance
As IAsyncResult
1)IAsyncResult 接口由包含可异步操作的方法的类实现。它是启动异步操作的方法的返回类型,如 FileStream.BeginRead,也是结束异步操作的方法的第三个参数的类型,如 FileStream.EndRead。当异步操作完成时,IAsyncResult 对象也将传递给由 AsyncCallback 委托调用的方法。
2).NET Framework 允许您异步调用任何方法。为此,应定义与您要调用的方法具有相同签名的委托;公共语言运行库会自动使用适当的签名为该委托定义 BeginInvoke 和 EndInvoke 方法。
BeginInvoke 方法可启动异步调用。它与您需要异步执行的方法具有相同的参数,另外它还有两个可选参数。第一个参数是一个 AsyncCallback 委托,该委托引用在异步调用完成时要调用的方法。第二个参数是一个用户定义的对象,该对象可向回调方法传递信息。BeginInvoke 立即返回,不等待异步调用完成。BeginInvoke 会返回 IAsyncResult,这个结果可用于监视异步调用进度。
EndInvoke 方法检索异步调用的结果。调用 BeginInvoke 后可随时调用 EndInvoke 方法;如果异步调用尚未完成,EndInvoke 将一直阻止调用线程,直到异步调用完成后才允许调用线程执行。EndInvoke 的参数包括您需要异步执行的方法的 out 和 ref 参数(在 Visual Basic 中为 <Out> ByRef 和 ByRef)以及由 BeginInvoke 返回的 IAsyncResult。
3) IAsyncResult 类型公开的成员
AsyncState 获取用户定义的对象,它限定或包含关于异步操作的信息。
AsyncWaitHandle 获取用于等待异步操作完成的 WaitHandle。
CompletedSynchronously 获取异步操作是否同步完成的指示。
IsCompleted 获取异步操作是否已完成的指示。
分享到:
相关推荐
最近收集的VB.Net-C#多线程Thread-代理委托delegate编程。文章列表: c#.net多线程同步.txt C#WebBrowser页面与WinForm交互技巧一.txt C#多线程编程-多细全.txt C#多线程编程简单实例.txt C#多线程窗体控件安全访问....
vb.net2010数据库编程基础教程-数据绑定,使用控件方式连接数据库,图文教程
VB.NET多线程编程技术--大量提高应用程序的性能[收集].pdf
VB.NET判断网络连接状态
VB.NET应用教程第2版-童爱红-数据包 书本内的全部代码!
VB.net设计模式高级编程这本书的源码,网上已经找不到,特发出来共享。
用VB.NET写的小计算器,之前看到一个,不过发现那个BUG挺多的,就自己写了一个,呵呵,仅供参考。打开里面的Caculate.vbproj文件,即可看到源代码。
使用VB.NET对PLC进行读写数据,方便快捷,对入门者有很好的编程
VB.NET设计模式高级编程—构建强适应性的应用程序源代码
AUTOCAD VBA&VB.NET开发基础与实例教程 c#
VB.NET实例解析应用编程 VB.NET实例解析应用编程 VB.NET实例解析应用编程
Developers guide to ASP.NET
AUTOCAD VBA&VB.NET开发基础与实例教程 c#
第二部分 vb.net的语法部分 第三部分 visual basic.net的运算 第四部分 visual basic.net的常用控件 第六部分 vb.net的OOP结构 第七部分 数据库访问技术 第八部分 vb.net的多线程 第九部分 vb.net的文件和出错处理
VB.NET之SerialPort编程实例源码 直接使用
vb.net控件应用编程实例教程vb.net控件应用编程实例教程vb.net控件应用编程实例教程
VB.NET高级篇教程
vb.net和sol server2000高级编程-创建高效数据层
vb.net(2008) 写的Keyence Laser LK-G5000数据读取。
vb.net多媒体编程vb.net多媒体编程vb.net多媒体编程vb.net多媒体编程