C# System.Threading.Thread再度回顾

本文回顾了C#中的System.Threading.Thread类,介绍了如何通过不同的构造函数初始化Thread实例,包括无参数和带参数的委托。内容包括代码示例和对Thread类的理解。
摘要由CSDN通过智能技术生成

最好的参考文档莫过于直接参看Thread 类,由于在.net 中,代码是未开源的,但是我们也是可以通过该类让我们获取一定的信息去使用该类。
例如初始化Thread实例:

public Thread(ThreadStart start);
    [ComVisible(true)]
    public delegate void ThreadStart();

通过这个构造函数,可以看出,初始化时,参数是一个委托,一个无参无返回值的委托。

再者

       [SecuritySafeCritical]
       public Thread(ParameterizedThreadStart start);

   [ComVisible(false)]
   public delegate void ParameterizedThreadStart(object obj);

通过这个构造函数,在进行实例化时,便可以使用一个带一个object参数的委托进行实例化。

代码实现:


2789632-319faf809c16d1ac.png

Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ClassThreadDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Thread t1 = new Thread(Say);
            // t1 = new Thread(new ThreadStart(Say));
            t1.Start();

            Thread t2 = new Thread(new ParameterizedThreadStart(Sayx));
            t2.Start(100);

            Console.ReadLine();
        }

        private static void Sayx(object x)
        {
            Console.WriteLine(x.ToString());
        }

        private static void Say()
        {
            Console.WriteLine("x + y");
        }
    }
}

析构函数:

        //
        // 摘要:
        //     确保垃圾回收器回收 System.Threading.Thread 对象时释放资源并执行其他清理操作。
        [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
        [SecuritySafeCritical]
        ~Thread();

Thread Class Code:

#region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\mscorlib.dll
#endregion

using System.Globalization;
using System.Runtime.ConstrainedExecution;
using System.Runtime.InteropServices;
using System.Runtime.Remoting.Contexts;
using System.Security;
using System.Security.Principal;

namespace System.Threading
{
    //
    // 摘要:
    //     创建和控制线程,设置其优先级并获取其状态。
    [ClassInterface(ClassInterfaceType.None)]
    [ComDefaultInterface(typeof(_Thread))]
    [ComVisible(true)]
    public sealed class Thread : CriticalFinalizerObject, _Thread
    {
        //
        // 摘要:
        //     初始化 System.Threading.Thread 类的新实例。
        //
        // 参数:
        //   start:
        //     表示开始执行此线程时要调用的方法的 System.Threading.ThreadStart 委托。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     start 参数为 null。
        [SecuritySafeCritical]
        public Thread(ThreadStart start);
        //
        // 摘要:
        //     初始化 System.Threading.Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托。
        //
        // 参数:
        //   start:
        //     一个委托,它表示此线程开始执行时要调用的方法。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     start 为 null。
        [SecuritySafeCritical]
        public Thread(ParameterizedThreadStart start);
        //
        // 摘要:
        //     初始化 System.Threading.Thread 类的新实例,指定线程的最大堆栈大小。
        //
        // 参数:
        //   start:
        //     表示开始执行此线程时要调用的方法的 System.Threading.ThreadStart 委托。
        //
        //   maxStackSize:
        //     线程要使用的最大堆栈大小(以字节为单位);如果为 0,则使用可执行文件的文件头中指定的默认最大堆栈大小。 重要事项:对于部分受信任的代码,如果 maxStackSize
        //     大于默认堆栈大小,则将其忽略。 不引发异常。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     start 为 null。
        //
        //   T:System.ArgumentOutOfRangeException:
        //     maxStackSize 小于零。
        [SecuritySafeCritical]
        public Thread(ThreadStart start, int maxStackSize);
        //
        // 摘要:
        //     初始化 System.Threading.Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小。
        //
        // 参数:
        //   start:
        //     表示开始执行此线程时要调用的方法的 System.Threading.ParameterizedThreadStart 委托。
        //
        //   maxStackSize:
        //     线程要使用的最大堆栈大小(以字节为单位);如果为 0,则使用可执行文件的文件头中指定的默认最大堆栈大小。 重要事项:对于部分受信任的代码,如果 maxStackSize
        //     大于默认堆栈大小,则将其忽略。 不引发异常。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     start 为 null。
        //
        //   T:System.ArgumentOutOfRangeException:
        //     maxStackSize 小于零。
        [SecuritySafeCritical]
        public Thread(ParameterizedThreadStart start, int maxStackSize);

        //
        // 摘要:
        //     确保垃圾回收器回收 System.Threading.Thread 对象时释放资源并执行其他清理操作。
        [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
        [SecuritySafeCritical]
        ~Thread();

        //
        // 摘要:
        //     获取或设置线程的当前负责人(对基于角色的安全性而言)。
        //
        // 返回结果:
        //     表示安全上下文的 System.Security.Principal.IPrincipal 值。
        //
        // 异常:
        //   T:System.Security.SecurityException:
        //     调用方没有设置该主体所需的权限。
        public static IPrincipal CurrentPrincipal { get; set; }
        //
        // 摘要:
        //     获取当前正在运行的线程。
        //
        // 返回结果:
        //     System.Threading.Thread,表示当前正在运行的线程。
        public static Thread CurrentThread { get; }
        //
        // 摘要:
        //     获取线程正在其中执行的当前上下文。
        //
        // 返回结果:
        //     表示当前线程上下文的 System.Runtime.Remoting.Contexts.Context。
        //
        // 异常:
        //   T:System.Security.SecurityException:
        //     调用方没有所要求的权限。
        public static Context CurrentContext { get; }
        //
        // 摘要:
        //     获取或设置当前线程的区域性。
        //
        // 返回结果:
        //     表示当前线程的区域性的对象。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     属性设置为 null。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值