(二)线程--通过委托异步调用方法
(一).描述
先运行个简单的线程示例,认识一下线程
通过委托调用方法,以及使用AsyncResult判断线程的状态
using System;
using System.Threading;
using System.Runtime.Remoting.Messaging;
namespace 通过委托异步调用方法
{
//委托声明(函数签名)
delegate string MyMethodDelegate();
class MyClass
{
//要调用的动态方法
public string MyMethod1()
{
return "Hello Word1";
}
//要调用的静态方法
public static string MyMethod2()
{
return "Hello Word2";
}
}
class Class1
{
/**//// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
MyClass myClass = new MyClass();
//方式1: 声明委托,调用MyMethod1
MyMethodDelegate d = new MyMethodDelegate(myClass.MyMethod1);
string strEnd = d();
Console.WriteLine(strEnd);
//方式2: 声明委托,调用MyMethod2 (使用AsyncResult对象调用)
d = new MyMethodDelegate(MyClass.MyMethod2); //定义一个委托可以供多个方法使用
AsyncResult myResult; //此类封闭异步委托异步调用的结果,通过AsyncResult得到结果.
myResult = (AsyncResult)d.BeginInvoke(null,null); //开始调用
while(!myResult.IsCompleted) //判断线程是否执行完成
{
Console.WriteLine("正在异步执行MyMethod2 ..");
}
Console.WriteLine("方法MyMethod2执行完成!");
strEnd = d.EndInvoke(myResult); //等待委托调用的方法完成,并返回结果
Console.WriteLine(strEnd);
Console.Read();
}
}
}
转载于:https://www.cnblogs.com/qiantuwuliang/archive/2009/05/30/1492507.html
(二)线程--通过委托异步调用方法相关推荐
- 17委托异步调用方法
抽象出一个炒菜的类. 1: //炒菜 2: public class Cooking 3: { 4: public string Cook(string food1, string food2) 5: ...
- java 异步调用方法_java异步调用方法有哪些?如何实现异步调用?
你知道java异步调用方法都有哪些吗?下面的文章内容,就对这方面的问题做了一下整理,一起来看看java异步调用的方法吧! 1.利用Spring的异步方法去执行 注:没有返回值 在启动类又或者是配置类加 ...
- SpringBoot异步调用方法
SpringBoot异步调用方法 一.spring boot--使用异步请求,提高系统的吞吐量 https://blog.csdn.net/liuchuanhong1/article/details/ ...
- 浅谈WebService开发二(同步与异步调用)转
上文 <http://www.dotnetgeek.cn/xuexiwebservice1.html>已经跟大家说了,如果创建一个webservice和简单的调用,本文将注重webserv ...
- 那些年我们一起追逐的多线程(Thread、ThreadPool、委托异步调用、Task/TaskFactory、Parallerl、async和await)
一. 背景 在刚接触开发的头几年里,说实话,根本不考虑多线程的这个问题,貌似那时候脑子里也有没有多线程的这个概念,所有的业务都是一个线程来处理,不考虑性能问题,当然也没有考虑多线程操作一条记录存在的并 ...
- WinForm 异步调用方法
假如要在一个线程中异步执行一个方法,则先创建一个该方法的委托类型,然后CLR会自动为该委托类型定义一个BeginInvoke方法和EndInvoke方法,我们就靠这两个方法异步调用委托类型指向的方法( ...
- 异步调用方法时异常的捕获
在异步调用一个方法时,由于不在一个线程内,异常的处理不同于普通同步调用,但可以在EndXXX时,使用try{}catch{}来捕获. public static void main(string[] ...
- Boost库实现线程池学习及线程实现的异步调用
A.Boost线程池实现 参考自: Boost库实现线程池实例 原理:使用boost的thread_group存储多个线程,使用bind方法将要处理的函数转换成线程可调用的函数进行执行:使用队列存储待 ...
- python 进程池、线程池 与异步调用、回调机制
进程池.线程池使用案例 from concurrent.futures import ProcessPoolExecutor # 进程池模块 from concurrent.futures impor ...
最新文章
- 用最骚的话让你彻底弄懂贝叶斯!
- e1载波把32个信道按_E1载波把32个信道按(11)方式复用在一条2.048Mb/s的高速信道上,每条话音信道的数据速率是(12)。...
- 【错误记录】Ubuntu 修改 hosts 文件 ( 使用 gedit /etc/hosts 命令打开并修改 hosts 文件 )
- 2017.3.9 对象 函数
- Nginx在开发中常用的基础命令
- spring mvc工作原理及组件说明
- 使用Android Studio向GitHub提交代码
- 使用gparted-LiveCD对centos分区调整---virtualbox磁盘调整序2
- 根据作用C语言关键字分为,C语言 关键字
- Mybatis日常操作遇到的问题
- 【绿色版】飞鸽传书2011绿色版
- mysql删除unionkey_MySQL索引如何优化?二十条铁则送给你
- 那些兼职中你不知道的事
- Julia :关于函数返回类型::
- 【打卡帖】7日玩转ESP32——(第5日) 通过串口的WiFi 配网
- 视频教程-亲自动手写一个深度学习框架-深度学习
- 开源框架面试之MyBatis面试题
- php博客系统答辩ppt,个人博客系统设计与实现答辩PPT.ppt
- ac7315功放音质_常见地功放地噪声及其处理技巧
- 无法将void类型转为object类型