zoukankan
html css js c++ java
C#:多线程使用TextBox控件
Posted on 2008-06-23 14:39
SmartStone
阅读(1334)
评论(2)
编辑
收藏
//
声明一个委托
public
delegate
void
SetTextBoxValue(
string
value);
//
委托使用文本框
void
SetMyTextBoxValue(
string
value)
{
//
Control.InvokeRequired 属性: 获取一个值,该值指示调用方在对控件进行方法调用时是否必须调用 Invoke 方法,因为调用方位于创建控件所在的线程以外的线程中。当前线程不是创建控件的线程时为true,当前线程中访问是False
if
(
this
.TextBoxControl.InvokeRequired)
{
SetTextBoxValue objSetTextBoxValue
=
new
SetTextBoxValue(SetMyTextBoxValue);
//
IAsyncResult 接口:表示异步操作的状态。不同的异步操作需要不同的类型来描述,自然可以返回任何对象。
//
Control.BeginInvoke 方法 (Delegate):在创建控件的基础句柄所在线程上异步执行指定委托。
IAsyncResult result
=
this
.TextBoxControl.BeginInvoke(objSetTextBoxValue,
new
object
[]
{ value }
);
try
{
objSetTextBoxValue.EndInvoke(result);
}
catch
{
}
}
else
{
this
.TextBoxControl.Text
+=
value
+
Environment.NewLine;
this
.TextBoxControl.SelectionStart
=
this
.TextBoxControl.TextLength;
this
.TextBoxControl.ScrollToCaret();
}
}
示例代码:
public
TestForm()
{
InitializeComponent();
}
private
delegate
void
SetTextBoxValue(
string
value);
private
void
SetMyTextBoxValue(
string
value)
{
if
(
this
.TextBoxControl.InvokeRequired)
{
SetTextBoxValue objSetTextBoxValue
=
new
SetTextBoxValue(SetMyTextBoxValue);
IAsyncResult result
=
this
.TextBoxControl.BeginInvoke(objSetTextBoxValue,
new
object
[]
{ value }
);
try
{
objSetTextBoxValue.EndInvoke(result);
}
catch
{
}
}
else
{
this
.TextBoxControl.Text
+=
value
+
Environment.NewLine;
this
.TextBoxControl.SelectionStart
=
this
.TextBoxControl.TextLength;
this
.TextBoxControl.ScrollToCaret();
}
}
private
void
ExecuteNewThread()
{
for
(
int
i
=
0
; i
<
1000
; i
++
)
{
SetMyTextBoxValue(i.ToString());
}
}
private
void
NewThreadButton_Click(
object
sender, EventArgs e)
{
Thread objThread
=
new
Thread(
new
ThreadStart(ExecuteNewThread));
objThread.IsBackground
=
true
;
objThread.Start();
}
}
查看全文
相关阅读:
大数据技术之_16_Scala学习_04_函数式编程-基础+面向对象编程-基础
大数据技术之_16_Scala学习_03_运算符+程序流程控制
大数据技术之_16_Scala学习_01_Scala 语言概述
通过创建一个简单的骰子游戏来探究 Python
在Linux系统中创建SSH服务器别名
DNS原理及劫持问题
详细介绍:Kubernetes1.4版本的新功能
Linux系统中五款好用的日志分析工具
wc命令——Linux系统高效数据统计工具
Linux系统内核正式进入5.0版本时代
原文地址:https://www.cnblogs.com/zhangchenliang/p/2443789.html
最新文章
[Python]打印指定目录下所有子目录
[Python]在当前目录下创建三个目录
田英章楷书字体下载
Oracle中创建千万级大表归纳
用笛卡尔积来创建一千六百万大表 整体19分钟 大表建成两分钟 设置id13分钟
求学生单科流水表中单科最近/最新的考试成绩表的四种方案(解释计划分析篇)
25分钟创建一千六百万大表全记录
『cs231n』循环神经网络RNN
『科学计算_理论』优化算法:梯度下降法&牛顿法
『Matplotlib』数据可视化专项
热门文章
『cs231n』卷积神经网络的可视化与进一步理解
『科学计算』线性代数部分作业
『科学计算_理论』线性代数几何原理剖析
『科学计算_理论』SVD奇异值分解
『科学计算_理论』协方差
『科学计算_理论』PCA主成分分析
『科学计算』最小二乘法
『科学计算』科学绘图库matplotlib学习之绘制动画
『科学计算』科学绘图库matplotlib练习
『Python』图像金字塔、滑动窗口和非极大值抑制实现
Copyright © 2011-2022 走看看