(二)线程--通过委托异步调用方法

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

(一).描述

先运行个简单的线程示例,认识一下线程

通过委托调用方法,以及使用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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航