.NET WinForm中 一个 跨线程访问控件的示例(网络)
来源:互联网 发布:软件设计师考试真题 编辑:程序博客网 时间:2024/06/06 03:30
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace DelegateSample
{
/// <summary>
/// 这里声明一个委托供线程调用
/// </summary>
/// <param name="txt"></param>
public delegate void AppendTextHandler(string txt);
public partial class Form1 : Form
{
Thread m_trd = null;
//实例化一个委托对象
AppendTextHandler m_handler = null;
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 窗体Load 事件
/// </summary>
/// <param name="e"></param>
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
//实例化一个委托对象
m_handler = new AppendTextHandler(AppendTextText);
//开启新线程
m_trd = new Thread(new ThreadStart(OtherThreadDoSomething));
m_trd.Start();
}
/// <summary>
/// 关闭窗体时结束创建的线程
/// </summary>
/// <param name="e"></param>
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
if (m_trd != null)
{
m_trd.Abort();
}
}
/// <summary>
/// 线程执行的方法
/// </summary>
private void OtherThreadDoSomething()
{
string _str;
while (Thread.CurrentThread.ThreadState!=ThreadState.Aborted)
{//线程未请求终止就一直执行
_str = System.Guid.NewGuid().ToString();
AppendTextText(_str);
Thread.Sleep(50);//可去掉
}
}
/// <summary>
/// 向当前窗体控件中增加文本
/// </summary>
/// <param name="txt"></param>
private void AppendTextText(string txt)
{
if (this.richTextBox1.InvokeRequired)
{//调用方在另外一个线程中
//在拥有此控件的线程上执行委托指向的方法
this.richTextBox1.Invoke(m_handler, txt);
}
else
{//调用方在当前线程中
this.richTextBox1.AppendText(txt + "\r\n");//增加文本
this.richTextBox1.ScrollToCaret();//滚动到当前目录
}
}
}
}
- .NET WinForm中 一个 跨线程访问控件的示例(网络)
- WinForm(C#)中跨线程访问控件的解决方法
- WinForm(C#)中跨线程访问控件的解决方法
- WinForm(C#)中跨线程访问控件的解决方法
- c#中线程访问winform控件的若干问题
- 转:c#中线程访问winform控件的若干问题
- c#中线程访问winform控件的若干问题
- C# .NET 在一个线程中访问另一个线程的控件
- C# .NET 在一个线程中访问另一个线程的控件
- WinForm中新开一个线程操作窗体上的控件(跨线程操作控件)GOOD
- Winform 跨线程访问控件的两个方法总结
- WinForm中线程问题:线程间操作无效: 从不是创建控件“...”的线程访问它
- WinForm中线程问题:线程间操作无效: 从不是创建控件“...”的线程访问它
- C#跨线程访问WinForm控件
- C# WinForm 跨线程访问控件
- C# vb.net 线程中安全的使访问示例
- Winform中多线程的控件访问引发的“线程间操作无效,从不是创建控件的线程访问它”
- .NET跨线程访问控件
- 栈的实现与应用
- 欢迎使用CSDN-markdown编辑器
- 获取SDCard存储大小
- ios多线程编程
- 利用XStream将List<String>转为xml后指定String的别名
- .NET WinForm中 一个 跨线程访问控件的示例(网络)
- 查看SDCard是否被挂载
- UFT的退出函数
- USART 串口 DMA 发送和接收
- angularJS之link函数对元素事件绑定或属性的操作
- python延迟N秒执行一次
- 方格取数(2)(最大点权独立集)
- 机器学习杂记
- hdu1520 Anniversary party(poj2342,树形dp)