C#多线程编程实例 螺纹与窗口交互
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#多线程编程实例 螺纹与窗口交互的更多相关文章
- C#多线程编程实例 线程与窗体交互
C#多线程编程实例 线程与窗体交互 代码: public partial class Form1 : Form { //声明线程数组 Thread[] workThreads = ]; public ...
- java多线程编程实例
[转]这篇文章主要介绍了java多线程编程实例,分享了几则多线程的实例代码,具有一定参考价值,加深多线程编程的理解还是很有帮助的,需要的朋友可以参考下. 1.三个售票窗口同时出售20张票程序分析: ...
- vc 基于对话框多线程编程实例——线程之间的通信
vc基于对话框多线程编程实例——线程之间的通信 实例:
- linux下C语言多线程编程实例
用一个实例.来学习linux下C语言多线程编程实例. 代码目的:通过创建两个线程来实现对一个数的递加.代码: //包含的头文件 #include <pthread.h> #include ...
- Linux多线程编程实例解析
Linux系统下的多线程遵循POSIX线程接口,称为 pthread.编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a.顺便说一下,Linux ...
- Linux C语言多线程编程实例解析
Linux系统下的多线程遵循POSIX线程接口,称为 pthread.编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a.顺便说一下,Linux ...
- C++ 多线程编程实例【2个线程模拟卖火车票的小程序】
原文:http://blog.csdn.net/chen825919148/article/details/7904219 核心提示:从网上搜集来的非常基础的C++多线程实例,刚入门的可以看看,希望能 ...
- Linux 多线程编程实例
一.多线程 VS 多进程 和进程相比,线程有很多优势.在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护代码段和数据.而运行于一个进程中的多个线程,他们之间使用相同 ...
- Linux 多线程编程 实例 2
编写一个程序,开启3个线程,这3个线程的ID分别为A.B.C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示:如:ABCABC….依次递推. 使用条件变量来实现: #inc ...
随机推荐
- hdu2712(贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2712 题意:是求最短的非子串(子串不要求连续)的长度. 分析:把序列划分为尽量多(假设为ans)的含有 ...
- AIX常用命令略记
■ 初始化端末时可能需要确认服务器端和端末时间是否匹配 ●cal 显示日历 ●date 显示服务前当前时间 ■ 显示当前目录,即显示当前所在目录的adress ●pwd(print workin ...
- MBR格式无法识别2T以上的硬盘的问题
早上有人打电话说四块2T的sata 硬盘做了raid 5之后安装window server 2012的时候,无法创建分区,安装完系统后无法给剩余的硬盘创建分区,刚开始的时候我还以为是别人分区的数量问题 ...
- 【译】ASP.NET MVC 5 教程 - 4:添加模型
原文:[译]ASP.NET MVC 5 教程 - 4:添加模型 在本节中,我们将添加一些管理电影数据库的类,这些类在ASP.NET MVC 应用程序中扮演“Model”的角色. 我们将使用.NET F ...
- python手记(48)
#!/usr/bin/env python # -*- coding: utf-8 -*- #http://blog.csdn.net/myhaspl #code:myhaspl@qq.com imp ...
- C的xml编程文章链接
官方地址:http://www.xmlsoft.org/ http://hi.baidu.com/singyea/item/ed4d1c335a9527b8633aff82 http://os.chi ...
- WPF中不规则窗体与WebBrowser控件的兼容问题解决办法
原文:WPF中不规则窗体与WebBrowser控件的兼容问题解决办法 引言 这几天受委托开发一个网络电视项目,要求初步先使用内嵌网页形式实现视频播放和选单,以后再考虑将网页中的所有功能整合进桌面程序. ...
- linux 除了某个文件或某个目录以外所有删除
rm `ls | grep -v "aa"` //删除除带aa字符串的全部文件 ls | grep -v keep | xargs rm //除keep字符串的以外全删除 r ...
- HDU 1171 Big Event in HDU (多重背包)
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- VMware vSphere 服务器虚拟化之十七 桌面虚拟化之安装View链接服务器
VMware vSphere 服务器虚拟化之十七 桌面虚拟化之安装View链接服务器 View链接服务器(View Connection Server)是Vmware Horizon View桌面虚拟 ...