多线程例子,传数据|软件开发|转自博客园
发布日期:2022-04-11 08:52:51
浏览次数:14
分类:博客文章
本文共 2152 字,大约阅读时间需要 7 分钟。
用回调方法检索数据下面的示例演示了一个从线程中检索数据的回调方法。包含数据和线程方法的类的构造函数也接受代表回调方法的委托;在线程方法结束前,它调用该回调委托。 */ using System; using System.Threading; // 被实例化的类,用于传递参数进行操作 public class ThreadWithState { private string boilerplate; private int value; //定义一个回调函数 private ExampleCallback callback; //接收线程传递的参数 public ThreadWithState(string text, int number, ExampleCallback callbackDelegate) { boilerplate = text; value = number; callback = callbackDelegate; } public void ThreadProc() { Console.WriteLine(boilerplate, value); //判断是否执行回调函数、并把参数传递给回调函数 if (callback != null) callback(1); }} // 声明一个回调函数:注意传递的参数要与Example类中的函数参数类型一致 public delegate void ExampleCallback( int lineCount); // 事例主类 public class Example { public static void Main() { //实例化ThreadWithState,并传递参数,注意:new ExampleCallback(ResultCallback)的命名空间引用,及其传递的参数(ResultCallback函数) ThreadWithState tws = new ThreadWithState("This number {0}.", 42, new ExampleCallback(ResultCallback)); Thread t = new Thread(new ThreadStart(tws.ThreadProc)); t.Start(); Console.WriteLine("线程开始执行"); //此为判断线程是否执行结束,但不建议阻塞线程,这样线程就会等待完成后再进行其他操作 //可利用:t.IsAlive是否处于执行状态来判断线程 t.Join(); Console.WriteLine("线程执行结束"); } //回调处理函数,应与ExampleCallback的参数类型应一致 public static void ResultCallback(int lineCount) { Console.WriteLine("printed {0} lines.", lineCount); }} /*向线程传递数据ThreadStart 委托既没有参数也没有返回值。这意味着不可以使用需要参数的方法启动线程,或从方法中获得返回值。 为向线程传递数据,需要创建一个用来保持数据和线程方法的对象,如下面的两个代码示例所示。 为检索线程方法的结果,您可以使用回调方法,如第二个代码示例中所示。 */using System;using System.Threading;//被实例化的类,用于传递参数进行操作public class ThreadWithState { private string boilerplate; private int value; public ThreadWithState(string text, int number) { boilerplate = text; value = number; } public void ThreadProc() { Console.WriteLine(boilerplate, value); }}//创建线程调用ThreadWithStatepublic class Example { public static void Main() { //实例化类ThreadWithState,利用构造函数向线程传递参数 ThreadWithState tws = new ThreadWithState("This number {0}.", 42); //创建线程并执行ThreadWithState类中的ThreadProc函数 Thread t = new Thread(new ThreadStart(tws.ThreadProc)); t.Start(); Console.WriteLine("线程开始执行"); //此为判断线程是否执行结束,但不建议阻塞线程,这样线程就会等待完成后再进行其他操作 //可利用:t.IsAlive是否处于执行状态来判断线程 t.Join(); Console.WriteLine("线程执行结束"); }}
转载地址:https://www.cnblogs.com/wangdetian168/archive/2008/12/21/1359255.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月16日 12时59分46秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基于java的魂斗罗的设计
2019-04-29
基于java的网页内容管理
2019-04-29
基于java的学生管理系统
2019-04-29
基于java网盘搜索的设计与实现
2019-04-29
基于SSM的仿小米商城源码
2019-04-29
基于SSM的医院人事管理系统的设计与实现
2019-04-29
基于SSM的网上购物系统的设计与开发
2019-04-29
基于SSM框架的BS微博系统的设计与实现
2019-04-29
超市订单管理系统
2019-04-29
基于ssm的民宿网站
2019-04-29
基于JavaWeb的物流管理系统的设计与实现
2019-04-29
基于Java的飞机大战游戏的设计与实现论文
2019-04-29
基于java实现的超级马里奥游戏
2019-04-29
keepalived 实现高可用,负载均衡
2019-04-29
linux发送邮件通知
2019-04-29
linux不删除文件:替换rm命令
2019-04-29
Centos6 搭建lnmp环境
2019-04-29
Hbase优化:使用压缩snappy,lz4
2019-04-29
maven 安装第三方jar包到本地仓库
2019-04-29
hbase数据结构模型
2019-04-29