.NET简谈组件程序设计之(多线程与并发管理一)
由于多线程的内容比较多我会用几篇文章来讲解。
多线程在我们日常开发过程中用的很多,上一篇“.NET简谈组件程序设计之(异步委托)”详细的讲解了基于委托的多线程使用,委托是基于后台线程池的原理,这篇文章将主要介绍直接使用Thread对象来实现多线程。
当然使用Thread没有使用Delegate那么容易,毕竟多线程跟异步调用是两个相差很大的技术方向,我也是略懂点皮毛,在此献丑给大家,如有讲的不对的地方还请指出。[王清培版权所有,转载请给出署名]
我们先来理解几个概念,以方便我们学习。
后台线程与前台线程
前台线程:什么叫前台线程,就是我们使用默认的Thread创建出来的没有进行IsBackground属性设置的都是前台线程,因为默认IsBackground是false。前台线程是明确任务的,也就是任何一个前台线程没有结束之前程序是不会自动退出的,除非强制关闭应用程序。
后台线程:后台线程是针对前台线程来说的,将Thread.IsBackground设置为true就是后台线程,后台线程是为前台线程服务的,就是说后台线程没有很强的生命力,只要前台线程都结束了,后台线程都强制结束,哪怕任务还没有完成都不行。所以我们在使用的时候要看情况进行选择。[王清培版权所有,转载请给出署名]
线程的切换
我们来看一段代码,以方便引入主题。
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Contexts;
namespace ConsoleApplication1.多线程和并发管理
{
public class MyClass
{
public void ShowMessage()
{
Thread currentthread = Thread.CurrentThread;
Console.WriteLine(currentthread.Name + currentthread.ManagedThreadId);
}
}
}
这是一段很简单的代码,就是一个ShowMessage方法,在方法里面有一个获取当前上下文线程的静态属性Thread.CurrentThread,然后输入该线程的名称和托管ID号;
namespace ConsoleApplication1.多线程和并发管理
{
public static class Program
{
static void Main(string[] args)
{
Thread currentthread = Thread.CurrentThread;
currentthread.Name = "主线程";
Console.WriteLine(currentthread.Name + currentthread.ManagedThreadId);
MyClass myclass = new MyClass();
ThreadStart start = new ThreadStart(myclass.ShowMessage);
Thread thread = new Thread(start);
thread.Name = "子线程";
thread.Start();
Thread.Sleep(1000);//休眠,线程切换
Console.WriteLine(currentthread.Name + currentthread.ManagedThreadId);
Console.Read();
}
}
}
这是调用代码,我先给主线
相关新闻>>
- 发表评论
-
- 最新评论 更多>>