(一).描述
先运行个简单的线程示例,认识一下线程
通过委托调用方法,以及使用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();
}
}
}
本示例代码已经测试,能够正常运行!
(三).示例下载
http://www.cnblogs.com/Files/ChengKing/ThreadExample.rar
分享到:
相关推荐
多线程异步调用(并参递参数)经典代码示例
首先,通过代码定义一个委托和下面三个示例将要调用的方法: 代码如下:public delegate int AddHandler(int a,int b); public class 加法类 { public static int Add(int a, int b) { Console.WriteLine(...
多线程处理是创建可以响应的智能客户端应用程序的重要部分,本文整理、概括与梳理了NET多线程处理的知识,主要包含:1)同步和异步调用之间的选择;2)前台线程和后台线程之间的选择;3)处理锁定和同步;4)何时使用...
|--aidl调用系统未公开的方法代码示例2 |--android dp和px之间转换 |--android INSTALL_PARSE_FAILED_MANIFEST_MALFORMED |--android root下禁用组件 |--android 判断网络状态 |--android 对话框样式 |--android ...
生命周期感知任务 从 UI 线程进行异步调用的简单库。 查看示例活动您提供的唯一两件事是callback和canHandle()方法
基础篇 • 怎样创建一个线程 • 受托管的线程与 Windows线程 • 前台线程与后台线程 • 名为BeginXXX和EndXXX的方法是做什么用的 • 异步和多线程有什么关联 ...• Web页面怎么调用异步WebService
使用Win32API实现Windows下异步串口通讯 目录:1.异步非阻塞串口通讯的优点2.异步非阻塞串口通讯的基本原理3.异步非阻塞串口通讯的基础知识4.异步非阻塞串口通讯的实现步骤一,异步非阻塞串口通讯的优点读写...
主要介绍了Spring Boot异步调用@Async过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
一、异步委托开启线程 public static void Main(string[] args){ Action<int> a=add; a.BeginInvoke(3,4,null,null);//前两个是add方法的参数,后两个可以为空 Console.WriteLine(main()); Console.ReadKey();...
主要给大家介绍了关于spring异步service中处理线程数限制的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用spring具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
今天在公司,忙里偷闲,总结一下.NET中的异步调用函数的实现方法,DebugLZQ在写这篇博文之前自己先动手写了本文的所有示例代码,开写之前是做过功课的,用代码说话方有说服力。 本文的内容旨在用最简洁的代码来把...
主动对象是相对于被动对象而言的,通常传统的方法调用都是由单一线程顺序完成对象内部的方法调用。因为对象内部的方法是由主线程被动调用的所以称之为被动对象1)。主动对象的方法调用表面上和普通的方法调用没有很大...
使用 IAsyncResult 调用异步方法 提供代码示例,演示应用程序检测异步操作结束的各种方式。 使用委托进行异步编程 介绍以异步方式调用同步方法。 使用基于事件的异步模式进行多线程编程 介绍基于事件的异步...
第7章:异步调用 异步机制的必备条件 委托的老调重弹 异步调用编程模型 异步错误处理 异步事件 异步调用缺陷 同步和异步处理 第8章:多线程和并发管理 线程和多线程 组件和线程 使用线程 同步线程 自动同步 手动同步...
WaitOne方法将一直等待,直到异步调用完成,并发出通知 * ************************************************************/ /* private delegate int NewTaskDelegate(int ms); private static int new...
主要给大家介绍了关于Spring Boot利用@Async异步调用:ThreadPoolTaskScheduler线程池的优雅关闭的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
阿里云java sdk源码 nls-sdk-java-demo 阿里云智能语音交互DEMO demo 解压后,在pom 目录运行mvn package ,会在target目录生成可执行jar nls-example-transcriber-2.0.0-jar-with-...:单线程调用演示实时语音识别接
客户端是用WPF编写的用来模拟聊天的窗体,通讯方式采用Socket,涵盖了命令,委托异步调用,Socket编程等多个知识点
join方法的功能就是使异步执行的线程变成同步执行。也就是说,当调用线程实例的start方法后,这个方法会立即返回,如果在调用start方法后后需要使用一个由这个线程计算得到的值,就必须使用join方法
网上关于C#的异步发送与接收资源很少,都是通过创建线程进行接收监听做的,本示例封装成了DLL,可以直接调用,可供大家参考,基于dev控件编写,估计有些人会打不开,可以参考CS中源代码使用