C#多线程编程实例 线程与窗体交互

代码:

    public partial class Form1 : Form{//声明线程数组Thread[] workThreads = new Thread[10];public Form1(){InitializeComponent();}//此委托允许异步的调用为Listbox添加Itemdelegate 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();}}}}

转载于:https://www.cnblogs.com/wolfocme110/p/5173924.html

C#多线程编程实例 线程与窗体交互相关推荐

  1. linux c多进程多线程,linux下的C\C++多进程多线程编程实例详解

    linux下的C\C++多进程多线程编程实例详解 1.多进程编程 #include #include #include int main() { pid_t child_pid; /* 创建一个子进程 ...

  2. VC多线程编程之线程创建与示例

    一.问题的提出 编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX ...

  3. 多线程编程(2): 线程的创建、启动、挂起和退出

    python多线程编程(2): 线程的创建.启动.挂起和退出 如上一节,python的threading.Thread类有一个run方法,用于定义线程的功能函数,可以在自己的线程类中覆盖该方法.而创建 ...

  4. Python多线程编程之线程子类化

    Python多线程编程之线程子类化 基本思路 Threading模块简介 **MyThread**主要代码 实例 所有代码 运行结果 基本思路 导入Threading模块下的Thread类,将其子类化 ...

  5. 多线程编程之三——线程间通讯

    七.线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信.这种线程间的通信不但是难以避免的,而 ...

  6. 多线程编程:线程死锁的原因以及解决方法

    多线程编程:线程死锁的原因以及解决方法 关于线程死锁这个问题相信程序员在编写多线程程序时会经常遇到的一个经典问题,这种情况往往出现在多个线程同时对临界资源访问时所产生的. 属于临界资源的硬件有打印机. ...

  7. C#中Socket多线程编程实例

    C#是微软随着VS.net新推出的一门语言.它作为一门新兴的语言,有着C++的强健,又有着VB等的RAD特性.而且,微软推出C#主要的目的是为了对抗Sun公司的Java.大家都知道Java语言的强大功 ...

  8. 多线程编程之四——线程的同步

     八.线程的同步 虽然多线程能给我们带来好处,但是也有不少问题需要解决.例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定 ...

  9. C# Socket多线程编程实例

    C#是微软随着VS.net新推出的一门语言.它作为一门新兴的语言,有着C++的强健,又有着VB等的RAD特性.而且,微软推出C#主要的目的是为了对抗Sun公司的Java.大家都知道Java语言的强大功 ...

最新文章

  1. loadingcache 有重试机制吗_重试机制的实现
  2. 7种不同的使用AI聊天机器人的方式
  3. 关于GAN的七个问题:谷歌大脑工程师带你梳理生成对抗网络
  4. 调试JavaScript/VB Script脚本程序(IE篇)
  5. 南宁网络推广浅谈能使文章快速收录的技巧有哪些?
  6. python适合做后端开发吗-Python后端开发是什么职位?
  7. 医院管理制度【第一辑】2010年11月12日
  8. document、body对象的事件
  9. 计算器服务端/客户端
  10. 【Android开发】NDK开发(3)-jni开发技巧
  11. MySQL流浪记(二)—— MySQL介绍及其特性
  12. MYSQL用存储过程创建百万级测试数据表
  13. (转)使用Spring的注解方式实现AOP的细节
  14. CoreData手动创建托管对象子类时报错
  15. Python读取Access数据库基本操作
  16. 开源视频处理工具Shotcut的用法: 剪切、合并、增加背景音乐、添加字幕、 插入视频、图片转视频并加背景音乐、制作电子相册
  17. 供应链库存管理-供应链库存案例分析
  18. 阿里云文字转语音接口
  19. Ajax的网络响应时间
  20. linux学生入门,Linux入门之《Linux从入门到精通》

热门文章

  1. java跨库调用存储_java-调用spring数据其余存储库方法不会返回...
  2. python3.4编程_python编程:从入门到实践习题3-4~3-7
  3. 微信小程序 不能跳转页面 跳转不生效
  4. 计算机内存插在主板的哪个槽,四个内存插槽,这是正确的安装顺序
  5. linux内核makefile详解,linux kernel编译Makefile和Kconfig,make menuconfig详解
  6. java如何关闭线程池_如何优雅的关闭Java线程池
  7. linux arm. 快速启动,教你如何快速启动Linux 系统
  8. 从0开始学习自动化测试框架cypress(二)DOM
  9. linux7重装linux6,CentOS6远程重装7过程
  10. mysql workbench 数据备份_如何使用MySQL Workbench进行MySQL数据库备份?