Thread线程类使用随笔

  • Thread步骤

    实例化Thread类,并传入一个指向线程所要运行方法的委托。(这时候这个线程已经产生,但是还没有运行)

    调用Thread实例的Start方法,标记该线程可以被CPU执行了,但具体执行时间由CPU决定。

  • 前台线程和后台线程区别

    前台线程:只有所有的前台线程都关闭才能完成程序关闭。

    后台线程:只要所有的前台线程结束,后台线程自动结束。

  • Thread常用方法
  1. Start()启动线程(告诉CPU 我可以被执行了,具体什么时候执行,由CPU决定)
  2. Abort()终止线程 终止完成之后不能再Start()
  3. Thread.Sleep(1) 静态方法,可以使当前线程停止一段时间运行
  4. Name线程名
  5. Thread.CurrentThread获得当前的线程引用
 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Threading;
 9 using System.Threading.Tasks;
10 using System.Windows.Forms;
11
12 namespace test2
13 {
14     public partial class Form1 : Form
15     {
16         public Form1()
17         {
18             InitializeComponent();
19         }
20         Thread th;//实例一个线程
21         private void button1_Click(object sender, EventArgs e)
22         {
23              th = new Thread(test);
24             th.IsBackground=true ;//后台线程,这样在进程结束后,线程自动结束
25             th.Start();
26         }
27         private void test()
28         {
29             for (int i = 0; i < 10000; i++)
30             {
31                 textBox1.Text = i.ToString();
32             }
33         }
34
35         private void Form1_Load(object sender, EventArgs e)
36         {
37             Control.CheckForIllegalCrossThreadCalls = false;
38         }
39
40         private void Form1_FormClosing(object sender, FormClosingEventArgs e)
41         {
42             if(th!=null)//如果线程在窗口关闭时还没有结束,则终止线程
43             {
44                 th.Abort();
45             }
46         }
47
48
49     }
50 }

以上是在VS2012的.net4.5版本的Winform下测试的,在WPF下测试待续。。。。

时间: 2024-10-07 18:08:30

Thread线程类使用随笔的相关文章

Thread线程类

设置线程名 查看线程名是很简单的,调用Thread.currentThread().getName()即可. public class MyThreadDemo { public static void main(String[] args) { MyThread myThread = new MyThread(); //带参构造方法给线程起名字 Thread thread1 = new Thread(myThread, "关注公众号Java3y"); Thread thread2 =

C#的线程类之Thread类以及对为什么设置线程优先级却不先执行这一问题本身的认识

1.C#对线程进行操作时,通过Thread类,可以对线程进行创建.挂起.恢复.休眠.终止及设置优先级. Thread类位于System.Threading命名空间下,该命名空间还包含一个ThreadPool类(允许用户使用系统提供的线程池)和一个Timer类(在线程池上执行回调方法) 在线程运行期间,不同的时刻会表现为不同的状态,但它总是处于由ThreadState定义的一个或多个状态中.用户可以通过使用ThreadPriority枚举为线程定义优先级,但不能保证操系统会接收该优先级 2.Thr

Java带参数的线程类ParameterizedThread——即如何给Thread传递参数

在Java中似乎没有提供带运行参数的线程实现类,在第三方类库中也没有找到.网上有大量的文章在讨论这个问题,但都没有提供很好的代码封装解决方案,这令我很吃惊.如果读者知道有官方或者第三方的实现方式,欢迎留言说明.本文最后给出了一种实现带运行参数的线程实现类. 在C#的基础类库中早就提供了相关的解决方案,如下是C#提供的带参数的子线程创建方法: Thread th = new Thread((param) => { Console.WriteLine(param); }); th.Start(i);

Delphi线程类 DIY(把类指针作为参数传进去,就可以执行类里面的方法啦)

Delphi 封装了一个很强大的线程类 TThread, 我们也自己动手制作一个简单的线程类 首先Type一个类 [delphi] view plain copy type TwwThread = class constructor Create; overload; destructor Destroy; override; private m_hThread: THandle;     //线程 m_ThreadID : TThreadID; public procedure Execute

一种线程类的实现方法

写一个线程基类,用户通过继承该基类,重写基类中定义的线程运行函数,即可实现启动线程运行自己的函数. 1 //Thread.h 2 3 #ifndef _THREAD_H 4 #define _THREAD_H 5 6 #include <pthread.h> 7 8 class Thread 9 { 10 public: 11 Thread(); 12 virtual ~Thread(); 13 void Start(); 14 void SetAutoDelete(bool autoDele

QT线程(一):线程类

线程之间共享数据,但又单独执行: QT线程QThread是平台无关的: 通常主线程从main开始执行,而在主线程中创建其他线程,其他线程派生于QThread: 1.线程优先级 总共8个优先级:线程优先级从上到下越来越高. Constant Value Description QThread::IdlePriority 0 scheduled only when no other threads are running. QThread::LowestPriority 1 scheduled le

[Java聊天室服务器]实战之四 线程类

前言 学习任何一个稍有难度的技术,要对其有充分理性的分析,之后果断做出决定---->也就是人们常说的"多谋善断":本系列虽然涉及的是socket相关的知识,但学习之前,更想和广大程序员分享的是一种心境:学习是一个循序渐进的过程,心态应该随时调节,保持戒骄戒躁的状态.比如最近在看网易公开课MIT<算法导论>,老师提到,学习算法之前要计算机数学+离散数学+概率论等课程的知识,所以一直学不好算法的程序员不妨从基础入手,这都是中国式教育惹的祸啊!(此处省略一万字......)

Process进程 ; Thread线程

<> 前台线程和后台线程 InvokeHelper:跨线程访问/修改主界面控件方法.属性 C#线程用法及跨线程访问 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace 进程Process { /// <summary> /// Process类是一个非静态类.它里面包含静态成员和非静态成员.静

Delphi 实现多线程编程的线程类 TThread

http://blog.csdn.net/henreash/article/details/3183119 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到, 但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了. 然而这并不是多线程编程的全部,我写此文的目的在于对此作一个补充. 线程本质上是进程中一段并发运行的代码. 一个进程至少有一个线程,即所谓的主线程. 同时还可以有多个