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();
}
}
查看全文
相关阅读:
F#周报2019年第40期
F#周报2019年第39期
F#周报2019年第38期
python模块之time_random
python小趣味_520绘制一个心形.
python模块之json_pickle_shelve
python基础17_列表推导式 vs 生成器表达式
python基础16_闭包_装饰器
Spark安装笔记
python基础15下_迭代器_生成器
原文地址:https://www.cnblogs.com/zhangchenliang/p/2443789.html
最新文章
让 “微软雅黑” 在IE6下完美显示
锚点跳转滑动效果
.net core 项目+jenkins+git+docker实现自动化部署
CnetOS7.5下安装Docker
Jenkins时区设置为北京时间
安装docker-compose的方法
Docker中安装Jenkins
Redis Cluster 集群三主三从高可用环境搭建
Consul作为配置中心,配置Asp.Net Core应用程序
.Net core+Ocelot+Consul 实现API网关 服务注册 服务发现 负载均衡
热门文章
使用VSCode创建一个Vue项目
推荐一个Redis管理工具
运维好习惯
F#周报2019年第44期
F#周报2019年第43期
F#周报2019年第42期
编程杂谈——std::vector与List<T>的性能比较
编程杂谈——使用emplace_back取代push_back
F#周报2019年第41期
编程杂谈——TinyXML2的快速实践
Copyright © 2011-2022 走看看