当前位置: 移动技术网 > IT编程>开发语言>c# > C#线程入门教程之单线程介绍

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

2019年07月18日  | 移动技术网IT编程  | 我要评论
什么是进程? 当一个程序被打开运行时,它就是一个进程。在进程中包括线程,进程可以由一个或多个线程组成。 什么是线程? 线程是程序执行流的最小单元。一个标准的线程由线程

什么是进程?

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

什么是线程?

线程是程序执行流的最小单元。一个标准的线程由线程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只有一个参数没有重载)。

执行结果:

main write:m 为主线程打印。

a:为线程threada打印。

bp:为带参数线程threadb打印。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网