源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#线程入门教程之单线程介绍

  • 时间:2021-04-17 09:43 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#线程入门教程之单线程介绍
[b]什么是进程?[/b] 当一个程序被打开运行时,它就是一个进程。在进程中包括线程,进程可以由一个或多个线程组成。 [b]什么是线程?[/b] 线程是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。 [b]什么是多线程?[/b] 多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。 [b]个人总结[/b] 在C#中我们开启一个应用程序就是打开了一个进程,这个进程中包括一个主线程。我们可以在此基础上在增加自己写的单个或多个线程,来执行我们想要完成的任务。 在Thread线程类中我们常用到的一样方法: Start():启动线程; Sleep(int):静态方法,暂停当前线程指定的毫秒数; Abort():通常使用该方法来终止一个线程; Suspend():该方法并不终止未完成的线程,它仅仅挂起线程,以后还可恢复; Resume():恢复被Suspend()方法挂起的线程的执行。 在C#中开启一个线程,来执行我们所写的方法。主要是通过ThreadStart代理委托来实现。下面写一些简单代码示例。 [b]代码示例[/b] 单线程:
[u]复制代码[/u] 代码如下:
using System; using System.Threading;   namespace StudyThread {     class Program     {         static void Main(string[] args)         {             OneThread();         }           static void OneThread()         {             Thread threadA = new Thread(ThreadMethod);             threadA.IsBackground = true;   //设置当前子线程为后台线程,为后台线程意味着,主线程关闭后,其他子线程都同时关闭             threadA.Start();               object ThreadParameter = "P";             Thread threadB = new Thread(new ParameterizedThreadStart(ThreadMethodParameter));             threadB.IsBackground = true;             threadB.Start(ThreadParameter);               Console.WriteLine("Main Write:M");             Console.ReadLine();         }           static void ThreadMethod()         {             for (int i = 0; i < 10; i++)             {                 Console.WriteLine("A");             }         }           /// <summary>         /// 带参数线程         /// </summary>         /// <param name="Parameter">只能定义一个object参数,因为委托ParameterizedThreadStart为单参数object类型</param>         static void ThreadMethodParameter(object Parameter)         {             for (int j = 0; j < 10; j++)             {                 Console.WriteLine("B"+Parameter);             }         }       } }
在代理里分别开启两个线程。 第一个线程ThreadA没带参数,线程运行时去执行ThreadMethod()方法. 第二个线程ThreadB带上一个Object参数,通过ParameterizedThreadStart委托去执行ThreadMethodParameter(object Parameter)方法.此线程在调用Start()时传入所需参数。 (写代码时我在想为什么带参数线程只能传一个object参数?看了代码才知道ParameterizedThreadStart只有一个参数没有重载)。 执行结果: [img]http://files.jb51.net/file_images/article/201502/2015226102318530.jpg?2015126102349[/img] Main Write:M 为主线程打印。 A:为线程ThreadA打印。 BP:为带参数线程ThreadB打印。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部