zoukankan      html  css  js  c++  java
  • C#之线程和线程池(Thread和ThreadPool类)

    注:要使用此方法都需要引入应用:using System.Threading;//引入应用

    参数意义:将要执行的方法排入队列以便执行,WaitCallback,即表示将要执行的方法;Object,包含方法所用数据的对象。如果将方法成功排入队列,则为 true;否则为 false

    一、下面是ThreadPool.QueueUserWorkItem 方法 (WaitCallback)的示例代码:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading;//引入应用
     6 
     7 namespace QueueUserWorkItem_WaitCallback_
     8 {
     9     class Program
    10     {
    11         static void Main(string[] args)
    12         {
    13             // Queue the task.
    14             ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc));
    15 
    16             Console.WriteLine("Main thread does some work, then sleeps.");
    17             // If you comment out the Sleep, the main thread exits before
    18             // the thread pool task runs.  The thread pool uses background
    19             // threads, which do not keep the application running.  (This
    20             // is a simple example of a race condition.)
    21             Thread.Sleep(1000);
    22 
    23             Console.WriteLine("Main thread exits.");
    24         }
    25 
    26         // This thread procedure performs the task.
    27         static void ThreadProc(Object stateInfo)
    28         {
    29             // No state object was passed to QueueUserWorkItem, so 
    30             // stateInfo is null.
    31             Console.WriteLine("Hello from the thread pool.");
    32         }
    33     }
    34 }

    运行以上代码后:

    二、下面是ThreadPool.QueueUserWorkItem 方法 (WaitCallback, Object)的示例代码:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading;
     6 
     7 namespace QueueUserWorkItem__WaitCallback__Object_
     8 {
     9     //将方法排入队列以便执行,并指定包含该方法所用数据的对象。 此方法在有线程池线程变得可用时执行。
    10     /*
    11      * 
    12      * public static bool QueueUserWorkItem(WaitCallback callBack,Object state)
    13      * 
    14      * 
    15      * callBack  类型:System.Threading.WaitCallback
    16      * WaitCallback ,它表示要执行的方法。
    17      * 
    18      * 
    19      * state     类型:System.Object
    20      * 包含方法所用数据的对象。
    21      * 
    22      * 
    23      * 返回值    类型:System.Boolean
    24      * 如果此方法成功排队,则为 true;如果无法将该工作项排队,则引发 NotSupportedException。
    25      * 
    26      * 
    27      * 注:如果回调方法需要复杂数据,可以定义包含这些数据的类。
    28      * 
    29      */
    30     class Program
    31     {
    32         static void Main(string[] args)
    33         {
    34             // Create an object containing the information needed for the task.
    35             TaskInfo ti = new TaskInfo("This report displays the number {0}.", 42);
    36 
    37             // Queue the task and data.
    38             ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc), ti);
    39 
    40             Console.WriteLine("Main thread does some work, then sleeps.");
    41 
    42             // If you comment out the Sleep, the main thread exits before
    43             // the ThreadPool task has a chance to run.  ThreadPool uses 
    44             // background threads, which do not keep the application 
    45             // running.  (This is a simple example of a race condition.)
    46             Thread.Sleep(1000);
    47 
    48             Console.WriteLine("Main thread exits.");
    49         }
    50 
    51         // The thread procedure performs the independent task, in this case
    52         // formatting and printing a very simple report.
    53         //
    54         static void ThreadProc(Object stateInfo)
    55         {
    56             TaskInfo ti = (TaskInfo)stateInfo;
    57             Console.WriteLine(ti.Boilerplate, ti.Value);
    58         }
    59     }
    60 
    61     // TaskInfo holds state information for a task that will be
    62     // executed by a ThreadPool thread.
    63     public class TaskInfo
    64     {
    65         // State information for the task.  These members
    66         // can be implemented as read-only properties, read/write
    67         // properties with validation, and so on, as required.
    68         public string Boilerplate;
    69         public int Value;
    70 
    71         // Public constructor provides an easy way to supply all
    72         // the information needed for the task.
    73         public TaskInfo(string text, int number)
    74         {
    75             Boilerplate = text;
    76             Value = number;
    77         }
    78     }
    79 }

    运行以上代码后:

  • 相关阅读:
    CefSharp-基于C#的客户端开发框架技术栈开发全记录
    C#中HttpWebRequest、WebClient、HttpClient的使用详解
    蜘蛛侠网站-关注C#爬虫技术
    网络剪刀-NetCut
    JSON.stringify 格式化输出字符串
    Vue 3.0 provide 传值到子组件
    全局添加可执行的node脚本
    npm link
    低代码平台思路
    java jwt使用,springboot 整合java-jwt,java jwt工具类
  • 原文地址:https://www.cnblogs.com/cocoon/p/4997038.html
Copyright © 2011-2022 走看看