线程的入口函数可以不带输入参数,也可以带输入参数:

form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading; namespace ThreadFormTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 100; i++)
{
lbl_state.Text = i.ToString();
}
} private void button2_Click(object sender, EventArgs e)
{
//调用TaskList类的实例成员方法DoTaskB
TaskList task = new TaskList();
Thread t1 = new Thread(task.DoTaskB);
t1.Start();
} private void button3_Click(object sender, EventArgs e)
{
Thread t1 = new Thread(TaskList.DoTaskA);
t1.Start();
} private void button4_Click(object sender, EventArgs e)
{
TaskList task = new TaskList();
Thread t1 = new Thread(task.StcDoTaskB);
t1.Start("实例方法");
} private void button5_Click(object sender, EventArgs e)
{
Thread t1 = new Thread(TaskList.StcDoTaskA);
t1.Start("静态方法");
} }
}

TaskList.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using System.Windows.Forms; namespace ThreadFormTest
{
public class TaskList
{
public void DoTaskB()
{
MessageBox.Show("我是实例成员方法");
} public static void DoTaskA()
{
MessageBox.Show("我是静态成员方法");
} public void StcDoTaskB(object date)
{
MessageBox.Show(date.ToString());
} public static void StcDoTaskA(object date)
{
MessageBox.Show(date.ToString());
}
}
}

form1界面设计

 

线程的挂起与恢复

Thread名字.Suspend();

Thread名字.Resume();

终止进程

Thread名字.Abort();

Thread名字.Join();

后台线程

前台线程和后台线程的区别在于,后台线程会随着主线程的结束而结束,而前台线程,应用程序要等待前台线程结束应用程序才能结束。当给IsBackground属性赋值true时就指明了你建立的是后台进程,如果你建立线程时不指明类型,呢么默认是前台进程。

线程的优先级

ThreadPriority枚举:

Highest、AboveNormal、BelowNormal、Lowest

并发问题

不同的线程在相同的时间要求被执行。他们之间对资源就会产生并发

锁与死锁

锁:用lock语句锁定在线程中共享的变量,另一个线程就必须等待倍锁定的解除

死锁:在死锁中,至少有两个线程倍挂起,等待对方解锁。由于两个线程都在等待对方,就出现了死锁,线程将无限等待下去。

lock(expression)//锁定expression,不被其他线程修改到

{

statement_block

}

C#线程使用学习的更多相关文章

  1. Java线程池学习

    Java线程池学习 Executor框架简介 在Java 5之后,并发编程引入了一堆新的启动.调度和管理线程的API.Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java ...

  2. 【Java多线程】线程池学习

    Java线程池学习 众所周知,Java不仅提供了线程,也提供了线程池库给我们使用,那么今天来学学线程池的具体使用以及线程池基本实现原理分析. ThreadPoolExecutor ThreadPool ...

  3. Java线程机制学习

    前面的文章中总结过Java中用来解决共享资源竞争导致线程不安全的几种常用方式: synchronized: ReentrantLock: ThreadLocal: 这些都是在简单介绍了基本用法的基础上 ...

  4. 爬虫基础线程进程学习-Scrapy

    性能相关 学习参考:http://www.cnblogs.com/wupeiqi/articles/6229292.html 在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时 ...

  5. c++11 线程池学习笔记 (一) 任务队列

    学习内容来自一下地址 http://www.cnblogs.com/qicosmos/p/4772486.html github https://github.com/qicosmos/cosmos ...

  6. c++11 线程池学习笔记 (二) 线程池

    学习内容来自以下地址 http://www.cnblogs.com/qicosmos/p/4772486.html github https://github.com/qicosmos/cosmos ...

  7. java 线程基础学习

    今天趁空闲时间看了点线程方面的知识 首先看的是volatile关键字,按照我之前书上看到的一点知识,自己的理解是,volatile关键字会阻止编译优化,因为cpu每次读取数据是并不是从高速缓存中读取, ...

  8. Linux线程互斥学习笔记--详细分析

    一.互斥锁 为啥要有互斥? 多个进程/线程执行的先后顺序不确定,何时切出CPU也不确定. 多个进程/线程访问变量的动作往往不是原子的. 1. 操作步骤 (1)创建锁 // 创建互斥锁mutex pth ...

  9. android中的线程池学习笔记

    阅读书籍: Android开发艺术探索 Android开发进阶从小工到专家 对线程池原理的简单理解: 创建多个线程并且进行管理,提交的任务会被线程池指派给其中的线程进行执行,通过线程池的统一调度和管理 ...

  10. Java 线程池学习

    Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具.真正的线程池接口是ExecutorService. 下面这张图完整描述了线程 ...

随机推荐

  1. Android控件常见属性

    1.宽/高android:layout_width android:layout_height// 取值match_parent //匹配父控件wrap_content //自适应,根据内容 如果指定 ...

  2. Android 创建Listener监听器形式选择:匿名内部类?外部类?

    说到监听器,第一感觉就是直接写作匿名内部类来用,可是依据单一职责原则,好像又不应该作为匿名内部类来写(由于监听中有时要写较多的逻辑代码),所曾经段时间把有共性的listener单独创建放在glut.l ...

  3. 【SpringMVC学习10】SpringMVC对RESTfull的支持

    RESTful架构,就是目前流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用.RESTful架构对url进行规范,写RESTful格式的url是什么样子 ...

  4. HTTP协议图解

    1.HTTP简介 http是用于客户端与服务端之间的通信 实际情况中客户端与服务端角色有可能互换,但从一条通信线路来说服务器端和客户端角色是确定的,http协议知道那个是服务端那个是客户端呢. htt ...

  5. C# string[ ][ ] 与string[,]

    1.string[][] 是一维数组,数组中的元素是string[],相当于锯齿数组 例如:string[][] arrar = new string[][] {                  n ...

  6. springboot学习(一) spring-boot是什么

    1.简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程. 2.主要优点 ①  使配置变得简单 ②  使编码变得简单 ③  使 ...

  7. Java基础IO流

    流 流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作.IO流最终要以对象来体现,对象都存在IO包中. IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流 ...

  8. JSTL JSP页面推断某个cookie的值和读取值....

    <c:if test="${cookie['woshop'].value eq '1'}">                 <div>           ...

  9. lua学习笔记(二)

    开始   程序块chunk     交互模式里输入的一行代     一个文件里的代码     也就是一连串的语句或命令     连续的lua语句之间不需要分隔符,但也可以使用分号,如果你愿意的话   ...

  10. 【COCOS2DX-LUA 脚本开发之四】

    使用tolua++编译pkg,从而创建自定义类让Lua脚本使用 本站文章均为李华明Himi原创,转载务必在明显处注明:(作者新浪微博:@李华明Himi ) 转载自[黑米GameDev街区] 原文链接: ...