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();
}
}
查看全文
相关阅读:
[错误处理]UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)
[已解决]使用 apt-get update 命令提示 ...中被配置了多次
linux各种版本查看方法
[Pandas技巧] 如何把pandas dataframe对象或series对象转换成list
linux下终止相关操作
[错误处理]Vim卡死,无法输入是怎么回事?是不是按了Ctrl+S
批量修改文件名称方法
pycharm配置 自动运行指定脚本
pip安装超时,更换国内镜像源安装
命令行特殊字符名字转义
原文地址:https://www.cnblogs.com/zhangchenliang/p/2443789.html
最新文章
PAT 甲级 1040 Longest Symmetric String (25 分)(字符串最长对称字串,遍历)
PAT 甲级 1039 Course List for Student (25 分)(字符串哈希,优先队列,没想到是哈希)*
PAT 甲级 1038 Recover the Smallest Number (30 分)(思维题,贪心)
PAT 甲级 1037 Magic Coupon (25 分) (较简单,贪心)
PAT 甲级 1036 Boys vs Girls (25 分)(简单题)
PAT 甲级 1035 Password (20 分)(简单题)
PAT 甲级 1034 Head of a Gang (30 分)(bfs,map,强连通)
PAT 甲级 1033 To Fill or Not to Fill (25 分)(贪心,误以为动态规划,忽视了油量问题)*
Python SciPy库——插值与拟合
matlab学习——05插值和拟合(黄河小浪底调水调沙问题)
热门文章
joomla对象注入漏洞分析
定义系统级别的异常取代接口、类中方法处理失败的信息返回
HBaseclientAPI基本操作
做一个思维严谨的人
linux基础教程---内容操作
android从放弃到坚持放弃第二课(下)
【基础练习】【BFS+A*】codevs1225八数码难题题解
Effective C++ 条款26
Wamp2.5 64bit,无法改动MySQL datadir位置
win7下cmake编译opencv2.3.1生成opencv—createsamples.exe和opencv_haartrainingd.exe
Copyright © 2011-2022 走看看