.NET平台下异步调用机制在财务分析软件中的应用研究
2011-10-26李继武黑龙江司法警官职业学院信息技术系哈尔滨150080
李继武 黑龙江司法警官职业学院信息技术系,哈尔滨 150080
.NET平台下异步调用机制在财务分析软件中的应用研究
李继武 黑龙江司法警官职业学院信息技术系,哈尔滨 150080
本文首先论述了.NET平台下异步调用机制的工作原理,然后探讨了利用异步调用机制处理财务分析软件中多线程下载研究报告的编程思路,并给出了重要部分的源代码,上述异步调用机制的编程思路和源代码对有关的工程实践有较高的实用价值。
.NET;异步;调用;财务;分析
.NET; Asynchronous; Calling; Financial; Analysis
引言
本文研究的问题来源于黑龙江省高等教育学会“十一五”规划课题“‘财务分析’课程辅助教学专家系统的研究”(下文简称“课题”)项目,拟解决上市公司研究报告远程多线程下载问题。
在课题中,诸多上市公司的研究报告需要从互联网上下载,考虑到数量多,下载量大,需要在软件开发过程中想个高效的解决办法,本文重点探讨在.N ET平台下利用异步调用机制多线程下载的编程思路,并给出重点部分的源码解决方案。
1 异步调用机制的工作过程解析
众多的研究报告如果一个一个的下载,效率较低,一个常规的解决方案是采用多线程编程,但是,多线程编程需要深入研究System.Th reading命名空间的细节,换句话说,开发难度较大,实际上,.NET针对这种问题提供了一个较易实行的解决方案:异步调用机制。下面,我讲解一下异步调用机制的工作过程。
1.1 定义一个委托
我们知道,C#编译器在处理delegate关键字时,其动态生成的类中定义了两个方法Begin Invoke()和End Invoke(),这两个方法可以使该委托类型自动拥有在单独的线程上调用方法的能力,不仅可以传递参数,还可以获得被调用方法的返回值,比如,定义如下一个委托:
p u b l i c d e l e g a t e v o i d Dow n loadReportHand ler(string url,string reportId);
其中,u r l表示要下载的研究报告所在的网络位置,reportId表示研究报告ID,基于上述定义,C#编译器将会生成如下方法原型:
public IAsyncResult Begin Invoke(string url,string reportId,AsyncCallback cb,object state);
pub lic in t End Invoke(IAsyncResu lt result);
在上述原型中,Begin Invoke()方法的返回值是IA syncResu lt类型,这个返回值传递给End Invoke()方法,即可获得异步方法的调用结果,由此看来,IAsyncResu lt类型无非是Begin Invoke()方法和En d Invok e()方法的一个桥梁而已。AsyncCallback是一个委托类型,实际调用Begin Invoke()方法时,可以提供一个AsyncCallback委托的实例作为参数,这样,当异步调用方法完成时,AsyncCallback委托便会自动调用指定的方法。Begin Invoke()方法的最后一个参数s t a t e允许从主线程传递额外的信息给AsyncCallback委托指定的方法。
1.2 定义Dow nloadReportHand ler委托指定的方法
根据Dow nloadReportHand ler委托,定义如下实例方法:
上述方法中,W ebClien t类用于从互联网下载资源。
1.3 定义AsyncCallback委托指定的的方法
我们可以在上述方法中编写代码处理异步调用方法完成后的事项。
1.4 编写主线程工作代码
有了前面编写的代码,我们就可以在主线程中编写如下代码:
2 编程样例运行效果简析
将.NET平台下的异步调用机制实际应用到软件开发中,取得了很好的应用效果,下面的软件运行界面就是一个实例如图一。
在图中,我们发现,多个研究报告有的已经下载完毕,有的正在下载,有的尚未下载,这种效果就是应用异步调用机制取得的,它有效地缩短了研究报告的下载时间,使程序高效地运行。
3 结束语
综上所述,我们会发现,.NET平台提供的异步调用机制语法简洁,思路清晰,既获得了多线程的好处,又避免了多线程编程的复杂性,对有关的工程实践有较高的实用价值。
图一
[1]Anders Hejlsberg, Mads Torgersen, Scott Wiltamuth, Peter Golde.C#程序设计语言.机械工业出版社.2 0 1 0
[2]Andrew Troelsen.C#与.NET3.5高级程序设计.人民邮电出版社.2 0 0 9
Research of The Application of .NET Platform Asynchronous Calling Mechanism In The Financial Analysis Softw are
LI Jiwu Heilongjiang Judicial Police Vocational College , Harbin 150080
This paper discusses the principles of .NET platform asynchronous calling mechanism first, and then discusses the programming ideas of multi-threaded downloads financial reports in the financial analysis software using asynchronous calling mechanism, and gives the source code of important parts, the above programming ideas of asynchronous calling mechanism and source code have a high practical value to engineering practice.
10.3969/j.issn.1001-8972.2011.10.130
李继武(1 9 7 3-),男,黑龙江哈尔滨人,副教授,硕士,主要研究方向为网络软件开发及企业级应用。