C#.net多线程的学习 (自学篇)

    .net框架的System.Threading命名空间提供了一些可以进行多线程编程的类和接口。除同步线程活动和访问数据的类(Mutex、Monitor、Interlocked、AutoResetEvent 等)外,此命名空间还包含一个 ThreadPool 类(它允许用户使用系统提供的线程池)和一个 Timer 类(它在线程池线程上执行回调方法)。
    以Thread类来说明,在MSDN说明如下:       

Thread 类  [C#]

创建并控制线程,设置其优先级并获取其状态。

有关此类型所有成员的列表,请参阅 Thread 成员。

System.Object
   System.Threading.Thread

[Visual Basic]
NotInheritable Public Class Thread

[C#]
public sealed class Thread

[C++]
public __gc __sealed class Thread

[JScript]
public class Thread

线程安全
该类型对于多线程操作是安全的。

备注
一个进程可以创建一个或多个线程以执行与该进程关联的部分程序代码。使用 ThreadStart 委托指定由线程执行的程序代码。

在线程存在期间,它总是处于由 ThreadState 定义的一个或多个状态中。可以为线程请求由 ThreadPriority 定义的调度优先级,但不能保证操作系统会接受该优先级。

GetHashCode 提供托管线程的标识。在线程的生存期内,无论获取该值的应用程序域如何,它都不会和任何来自其他线程的值冲突。

注意   操作系统 ThreadId 和托管线程没有固定关系,这是因为非托管宿主能控制托管与非托管线程之间的关系。特别是,复杂的宿主可以使用 CLR Hosting API 针对相同的操作系统线程调度很多托管线程,或者在不同的操作系统线程之间移动托管线程。

    看个最简单的例子:

1、新建立个Windows应用程序,在Form1窗体上添加三个按钮。

2、在 Form1.cs类下的开始位置加上声明:using System.Threading;

3、在Form1类中加上:

    public void MyThread1()

    {//线程1

             MessageBox.Show("线程一,可以不用关闭当前对话框就执行程序其他功能。","系统提示",MessageBoxButton.Ok,MessageBoxIcon.Information);

    }

   public void MyThread2()

    {//线程2

             MessageBox.Show("线程二,可以不用关闭当前对话框就执行程序其他功能。","系统提示",MessageBoxButton.Ok,MessageBoxIcon.Information);

    }

4、在个Button的事件代码如下:

  private void button1_Click(object sender, System.EventArgs e)
  {//线程一
   Thread MyThread=new Thread(new ThreadStart(MyThread1));
   MyThread.Start();
  }

  private void button2_Click(object sender, System.EventArgs e)
  {//线程二
   Thread MyThread=new Thread(new ThreadStart(MyThread2));
   MyThread.Start();
  }

  private void button3_Click(object sender, System.EventArgs e)
  {//普通模式
   MessageBox.Show("必须关闭当前对话框,才可以执行程序的其他功能","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
  }

//   备注: Start()方法,是将导致操作系统将当前实例的状态更改为ThreadState.Running.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值