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

作者:junjie 时间:2022-03-15 20:37:28 

什么是进程?

当一个程序被打开运行时,它就是一个进程。在进程中包括线程,进程可以由一个或多个线程组成。

什么是线程?

线程是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。

什么是多线程?

多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。

个人总结

在C#中我们开启一个应用程序就是打开了一个进程,这个进程中包括一个主线程。我们可以在此基础上在增加自己写的单个或多个线程,来执行我们想要完成的任务。

在Thread线程类中我们常用到的一样方法:

Start():启动线程;
Sleep(int):静态方法,暂停当前线程指定的毫秒数;
Abort():通常使用该方法来终止一个线程;
Suspend():该方法并不终止未完成的线程,它仅仅挂起线程,以后还可恢复;
Resume():恢复被Suspend()方法挂起的线程的执行。

在C#中开启一个线程,来执行我们所写的方法。主要是通过ThreadStart代理委托来实现。下面写一些简单代码示例。

代码示例

单线程:


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只有一个参数没有重载)。

执行结果:

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

Main Write:M 为主线程打印。

A:为线程ThreadA打印。

BP:为带参数线程ThreadB打印。

标签:C#,线程,入门教程,单线程
0
投稿

猜你喜欢

  • Android开发使用Databinding实现关注功能mvvp

    2023-07-23 19:27:32
  • 直接在线预览Word、Excel、TXT文件之ASP.NET

    2021-10-07 15:37:54
  • Java反射如何修改private final成员变量值

    2023-09-06 03:43:18
  • java的Console类的使用方法及实例

    2022-09-20 15:47:27
  • 使用spring容器在初始化Bean时前和后的操作

    2021-07-01 05:49:24
  • Java并发编程学习之Unsafe类与LockSupport类源码详析

    2022-10-21 19:07:01
  • 解析使用enumerator模式简化异步操作的详解

    2021-10-08 01:44:54
  • c#使用win32api实现获取光标位置

    2022-05-09 10:59:33
  • Android使用RecyclerView实现水平滚动控件

    2021-09-10 20:17:54
  • Java中的static关键字深入理解

    2022-02-01 12:59:40
  • Android安卓中循环录像并检测内存卡容量

    2021-06-21 13:12:55
  • Android仿XListView支持下拉刷新和上划加载更多的自定义RecyclerView

    2023-04-26 12:46:02
  • C#生成带注释的dll并引用实现

    2023-08-31 16:01:09
  • jar命令的用法详解

    2022-08-14 13:37:28
  • Java实现用户管理系统

    2023-08-26 17:18:21
  • Android添加水印的正确方法 只要三步!

    2022-08-07 16:48:15
  • java8新特性 stream流的方式遍历集合和数组操作

    2023-03-29 10:49:25
  • mybatis的动态SQL和模糊查询实例详解

    2022-03-10 09:47:03
  • C#类的创建与初始化实例解析

    2023-08-05 17:55:31
  • Activiti开发环境的配置

    2021-07-31 21:57:51
  • asp之家 软件编程 m.aspxhome.com