C#异步调用四大方法详解.docx

C#异步调用四大方法详解.docx

ID:57609480

大小:32.64 KB

页数:6页

时间:2020-08-28

C#异步调用四大方法详解.docx_第1页
C#异步调用四大方法详解.docx_第2页
C#异步调用四大方法详解.docx_第3页
C#异步调用四大方法详解.docx_第4页
C#异步调用四大方法详解.docx_第5页
资源描述:

《C#异步调用四大方法详解.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C#异步调用四大方法是什么呢?他们各自的作用是什么呢?那么本文就向你介绍C#异步调用四大方法的具体内容。AD:C#异步调用四大方法是什么呢?C#异步调用四大方法的使用是如何进行的呢?让我们首先了解下什么时候用到C#异步调用:.NETFramework允许您C#异步调用任何方法。定义与您需要调用的方法具有相同签名的委托;公共语言运行库将自动为该委托定义具有适当签名的BeginInvoke和EndInvoke方法。BeginInvoke方法用于启动C#异步调用。它与您需要异步执行的方法具有相同的参数,只不过还有两个额外的参数(将在稍后描述)。BeginInvok

2、e立即返回,不等待C#异步调用完成。BeginInvoke返回IasyncResult,可用于监视调用进度。EndInvoke方法用于检索C#异步调用结果。调用BeginInvoke后可随时调用EndInvoke方法;如果C#异步调用未完成,EndInvoke将一直阻塞到C#异步调用完成。EndInvoke的参数包括您需要异步执行的方法的out和ref参数(在VisualBasic中为 ByRef和ByRef)以及由BeginInvoke返回的IAsyncResult。注意  VisualStudio.NET中的智能感知功能会显示BeginInvoke和En

3、dInvoke的参数。如果您没有使用VisualStudio或类似的工具,或者您使用的是C#和VisualStudio.NET,请参见异步方法签名获取有关运行库为这些方法定义的参数的描述。本主题中的代码演示了四种使用BeginInvoke和EndInvoke进行C#异步调用的常用方法。调用了BeginInvoke后,可以:·进行某些操作,然后调用EndInvoke一直阻塞到调用完成。·使用IAsyncResult.AsyncWaitHandle获取WaitHandle,使用它的WaitOne方法将执行一直阻塞到发出WaitHandle信号,然后调用EndIn

4、voke。·轮询由BeginInvoke返回的IAsyncResult,确定C#异步调用何时完成,然后调用EndInvoke。·将用于回调方法的委托传递给BeginInvoke。该方法在C#异步调用完成后在ThreadPool线程上执行,它可以调用EndInvoke。警告:始终在C#异步调用完成后调用EndInvoke。测试方法和异步委托四个示例全部使用同一个长期运行的测试方法TestMethod。该方法显示一个表明它已开始处理的控制台信息,休眠几秒钟,然后结束。TestMethod有一个out参数(在VisualBasic中为 ByRef),它演示了如何将

5、这些参数添加到BeginInvoke和EndInvoke的签名中。您可以用类似的方式处理ref参数(在VisualBasic中为ByRef)。下面的代码示例显示TestMethod以及代表TestMethod的委托;若要使用任一示例,请将示例代码追加到这段代码中。注意  为了简化这些示例,TestMethod在独立于Main()的类中声明。或者,TestMethod可以是包含Main()的同一类中的static方法(在VisualBasic中为Shared)。1.using System; 2.using System.Threading;  3. 4.pu

6、blic class AsyncDemo { 5.// The method to be executed asynchronously. 6.// 7.public string TestMethod( 8.int callDuration, out int threadId) { 9.Console.WriteLine("Test method begins."); 10.Thread.Sleep(callDuration); 11.threadId = AppDomain.GetCurrentThreadId(); 12.return "MyCallT

7、ime was " + callDuration.ToString(); 13.} 14.} 15. 16.// The delegate must have the same signature as the method 17.// you want to call asynchronously. 18.public delegate string AsyncDelegate( 19.int callDuration, out int threadId); 20.  21. 22.using System; 23.using System.Threadi

8、ng;  24. 25.public class A

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。