.NET简谈组件程序设计之(多线程与并发管理一)

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 09:23 点击:

由于多线程的内容比较多我会用几篇文章来讲解。
多线程在我们日常开发过程中用的很多,上一篇“.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(); 
    } 
    }    

 
 这是调用代码,我先给主线

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • 浅析.NET下XML数据访问新机制
      • asp.net 面试+笔试题目第1/2页
      • C# 邮件地址是否合法的验证
      • C#高级编程:数据库连接[1]
      • asp.net 设置GridView的选中行的实现代码
      • 经典C++程序1
      • IIS 自动回收导致后台定时器失效的问题解决
      • ASP.NET GridView列表代码示例
      • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1