C#多线程编程实例 线程与窗体交互
代码:
public partial class Form1 : Form
{
//声明线程数组
Thread[] workThreads = new Thread[10];
public Form1()
{
InitializeComponent();
}
//此委托允许异步的调用为Listbox添加Item
delegate void AddItemCallback(string text);
//这种方法演示如何在线程安全的模式下调用Windows窗体上的控件。
private void AddItem(string text)
{
if (this.listBox1.InvokeRequired)
{
AddItemCallback d = new AddItemCallback(AddItem);
this.Invoke(d, new object[] { text });
}
else
{
this.listBox1.Items.Add(text);
}
}
//数据采集方法
public void DataGet()
{
while (true)
{
AddItem("ok");
Thread.Sleep(1000);
}
//如果此方法退出了,那么这个线程也就退出了
}
/// <summary>
/// 启动线程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
//循环创建并启动线程执行
for (int i = 0; i < workThreads.Length; i++)
{
if (workThreads[i] == null)
{
//如果线程不存在,则创建
workThreads[i] = new Thread(new ThreadStart(DataGet));
workThreads[i].Name = i.ToString();
workThreads[i].Start();
}
else
{
//已经存在,如果没有运行,则启动
if (workThreads[i].ThreadState == ThreadState.Aborted || workThreads[i].ThreadState == ThreadState.Stopped)
{
workThreads[i] = new Thread(new ThreadStart(DataGet));
workThreads[i].Name = i.ToString();
workThreads[i].Start();
}else{
workThreads[i].Start();
}
}
}
}
/// <summary>
/// 停止线程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
//循环停止线程执行
for (int i = 0; i < workThreads.Length; i++)
{
//如果线程存在,并且状态不是停止也不是终止的,则终止该线程
if (workThreads[i] != null && workThreads[i].ThreadState != ThreadState.Stopped && workThreads[i].ThreadState != ThreadState.Aborted)
{
workThreads[i].Abort();
}
}
}
}
源码下载:http://download.csdn.net/detail/testcs_dn/7618881
分享到:
相关推荐
C#多线程编程实例 线程与窗体交互源码.rar
C#多线程编程实例 线程与窗体交互源码,该示例演示如何在线程安全的模式下调用Windows窗体上的控件。
C#Socket多线程编程实例,以C#为开发工具,实现了多线程的通信
C#多线程编程简单实例.txt C#多线程窗体控件安全访问.txt C#多线程使用TextBox控件 .txt C#多线程注意点.txt Control的Invoke和BeginInvoke.txt Invoke和BeginInvoke的真正含义.txt NET异步调用模式.txt TreeView...
C#多线程笔记 每个窗体都有自己的都在不同的线程上运行,如果需要在窗体之间交互,就需要在线程之间交互。
今天小编给大家介绍下C#里的多线程技术。主要是让大家学会线程的创建和启动方法,理解在线程中如何通过委托和窗体控件交互,同时练习IPAddress类、Dns类、IPHostEntry类的基本用法。 1、打开Microsoft Visual ...
支持多个下载任务,分块多线程下载,断点续传。 (对比上个版本,完成了遗留的功能,修改了事件触发过程及处理方式,重新整理了代码及注释) 内含两个窗体,可视为演示程序。 DownloadForm 下载窗体,含相关事件...
支持多个下载任务,分块多线程下载,断点续传。 (对比上个版本,完成了遗留的功能,修改了事件触发过程及处理方式,重新整理了代码及注释) 内含两个窗体,可视为演示程序。 DownloadForm 下载窗体,含相关事件...
C#实现的等待窗体,采用多线程技术。效果不错,用动画进行播放。
winform多线程与窗体数据交互 C# winform thread
书中不仅全面介绍了常见的图形界面编程技术,而且对WPF中非常有特色的文档和打印、音频和视频、动画、3D图形开发、多线程和插件等内容也进行了比较深入的介绍。 第1章 WPF概述 1.1 Windows图形演化 1.1.1 ...
很多时候写windows程序都需要结合多线程,在C#中用如下得代码来创建并启动一个新的线程。 Thread thread = new Thread(new ThreadStart(ThreadProc));//实例化一个线程 thread.IsBackground = true;//将线程改为...
WPF编程宝典c#2010中文电子书,绝对适合初学者。 目录:第1章 wpf概述 第2章 xaml 第3章 布局 第4章 依赖项属性 ...第30章 与windows窗体的交互 第31章 多线程 第32章 插件模型 第33章 clickonce部署