zoukankan
html css js c++ java
向线程传递数据与线程用回调方法检索数据
用回调方法检索数据
/**/
/*
用回调方法检索数据
下面的示例演示了一个从线程中检索数据的回调方法。包含数据和线程方法的类的构造函数也接受代表回调方法的委托;
在线程方法结束前,它调用该回调委托。
*/
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);
}
}
//
创建线程调用ThreadWithState
public
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(
"
线程执行结束
"
);
}
}
查看全文
相关阅读:
开启mysql远程访问的知识点
U850EAI二次开发说明,用友EAI二次开发说明下载
U8界面按钮二次开发手册,用友界面二次开发手册.pdf下载
用友二次开发,用友EAI案例分析
正则表达式在线测试相关网站
用友EAI企业应用集成使用手册U8EAI手册2006年下载
用友EAI企业应用集成使用手册U8EAI手册2005年下载
U8EAI企业应用集成培训,用友EAI培训下载
如何使用批处理,遍历指定目录下的文件。
hdu 1021 数学水题 枚举法
原文地址:https://www.cnblogs.com/hanguoji/p/657947.html
最新文章
SQL语句创建自增列
无提示框关闭IE窗口
ASP.NET动态生成HTML页面
上传图片并生成图片缩略图
推荐一个很不错的网站
使用XmlRpc发布文章到WordPress,总是处于定时发布的问题。
内部查询处理器错误: 查询处理器无法生成查询计划。有关详细信息,请与客户支持服务部门联系。
MySQL的转义字符“\”
用友U8的年末结转规则下载
U8二次开发规范,用友二次开发规范.pdf下载
热门文章
使用ado执行存储过程时,需要注意,不要返回受影响的行数。
利用DotRAS组件,实现ADSL的自动拨号断网自动化操作[转]
U8_开发单据和单据列表总结_871下载
U8EAI产品手册,EAI讲解下载
WordPress远程发布相关资源
我的第一个Ajax学习例子
帝国cms
用友U8远程接入解决方案用户手册下载
如何更改Nant编译的目标框架版本?
如何使用WebBrowser控件执行页面的JavaScript脚本,WebBrowser执行JavaScript脚本
Copyright © 2011-2022 走看看