您现在的位置是:首页
>
jmeter跨线程调用 C# 跨线程调用TextBox方法浅析
C# 跨线程调用TextBox方法浅析 首先来看下面代码 主线程 delegate void SetTextCall ack( tri g text) rivate void SetText( tri
C# 跨线程调用TextBox方法浅析

首先来看下面代码 主线程 delegate void SetTextCallback(string text) private void SetText(string text) { if (this textBox InvokeRequired) { SetTextCallback d = new SetTextCallback(SetText) this Invoke(d new object[] { text }) } else { this textBox Text = text; } } private void BtnMainThread_Click(object sender EventArgs e) //主线程调用textBox { this textBox Text = Main Thread ; } 子线程 private void BtnNewThread_Click(object sender EventArgs e) //子线程调用textBox { this demoThread = new Thread(new ThreadStart(this NewThreadSet)) this demoThread Start() } private void NewThreadSet() { this SetText( New Thread ) } 首先需要对 this textBox InvokeRequired 返回值的解释 当主线程调用其所在的方法时返回 False 当子线程调用其所在的方法时返回 True 当单击 主线程调用textBox 时 this textBox InvokeRequired 的返回值为 False 直接执行 else 的代码 textBox 中显示 Main Thread 当单击 子线程调用textBox 时 this textBox InvokeRequired 的返回值为 True 执行 SetTextCallback d = new SetTextCallback(SetText) this Invoke(d new object[] { text }) 这两句代码 其中Invoke的作用是 在拥有控件的基础窗口句柄的线程上 用指定的参数列表执行指定委托 a 在拥有控件的基础窗口句柄的线程上 就是指主线程 b 指定的参数列表 是指的参数 text c 指定委托 是指 SetText 方法 这样就很容易看出 代码执行到 Invoke 后就会把子线程的参数 New Thread 交给主线程去执行 SetText 方法 此时由于是主线程调用SetText方法 所以this textBox InvokeRequired的返回值为False 直接执行else的代码 textBox 中显示 New Thread lishixinzhi/Article/program/net/201311/12241
很赞哦! (1038)
相关文章
- wpf高级编程pdf C#高级编程:使用 XmlTextReader类[2]
- 计算器上的%怎么按出来 c#做的计算器,如何在下次输入数字时,textbox里的结果自动清除
- winform控件详解 c#中使用多线程访问winform中控件
- java多线程和线程池 C# 实现的多线程异步Socket数据包接收器框架
- wps表单填写后在哪里看结果 C#技巧:网页表单自动填写技术(以gmail为例)
- winform控件详解 C#动态绑定treeview控件
- 代码是什么 C#代码实现DataTemplate
- java多线程的实现方式 C#实现远程线程插入
- vb转c VB.NET中让Textbox只能输入数字
- 调用方法的具体调用格式为 C#调用JS的几种方法
爱学记

微信收款码
支付宝收款码