zoukankan      html  css  js  c++  java
  • 多线程(二)启动线程:需要传参和不需要传参两种情况

    1、不需要传参:

     class Program7
        {
            private static void ExecuteInForeground()
            {
                DateTime start = DateTime.Now;
                var sw = Stopwatch.StartNew();
                Console.WriteLine("Thread {0}: {1}, Priority {2}",
                                  Thread.CurrentThread.ManagedThreadId,
                                  Thread.CurrentThread.ThreadState,
                                  Thread.CurrentThread.Priority);
                do
                {
                    Console.WriteLine("Thread {0}: Elapsed {1:N2} seconds",
                                      Thread.CurrentThread.ManagedThreadId,
                                      sw.ElapsedMilliseconds / 1000.0);
                    Thread.Sleep(500);
                } while (sw.ElapsedMilliseconds <= 5000);
                sw.Stop();
            }
            static void Main7777(string[] args)
            {
                //如果该方法不具有任何参数,则传递ThreadStart委托给构造函数。
                //使用的是这个构造函数
                //public delegate void ThreadStart()   
                var th = new Thread(ExecuteInForeground);
                th.Start();
                Thread.Sleep(1000);
                Console.WriteLine("Main thread ({0}) exiting...",
                                  Thread.CurrentThread.ManagedThreadId);
                Console.ReadLine();
            }
        }

    2、需要传参:

    class Program8
        {
            private static void ExecuteInForeground(Object obj)
            {
                int interval;
                try
                {
                    interval = (int)obj;
                }
                catch (InvalidCastException)
                {
                    interval = 5000;
                }
                DateTime start = DateTime.Now;
                var sw = Stopwatch.StartNew();
                Console.WriteLine("Thread {0}: {1}, Priority {2}",
                                  Thread.CurrentThread.ManagedThreadId,
                                  Thread.CurrentThread.ThreadState,
                                  Thread.CurrentThread.Priority);
                do
                {
                    Console.WriteLine("Thread {0}: Elapsed {1:N2} seconds",
                                      Thread.CurrentThread.ManagedThreadId,
                                      sw.ElapsedMilliseconds / 1000.0);
                    Thread.Sleep(500);
                } while (sw.ElapsedMilliseconds <= interval);
                sw.Stop();
            }
            static void Main(string[] args)
            {
                //如果该方法具有参数,则传递ParameterizedThreadStart委托给构造函数。
                //使用的是这个构造函数
                //public delegate void ParameterizedThreadStart(object obj)  
                var th = new Thread(ExecuteInForeground);
                th.Start(4500);
                Thread.Sleep(1000);
                Console.WriteLine("Main thread ({0}) exiting...",
                                  Thread.CurrentThread.ManagedThreadId);
                Console.WriteLine("主线程执行完毕");
                Console.ReadLine();
            }
        }
  • 相关阅读:
    Centos7 GRE Tunnel
    centos 7 增加永久静态路由
    ceph bluestore与 filestore 数据存放的区别
    swift对象存储安装
    [WebRTC] Audio Codec Encoder 基类注解
    [WebRTC] 源码中的Audio Codec整理
    [Math] Maple函数用法
    [Server] Nginx Https配置 及 Firefox提示“此页面使用较弱加密”
    [Windows] 导出所有设置过的Group Policy
    [Tool] WebDav 安装及使用
  • 原文地址:https://www.cnblogs.com/25miao/p/9862525.html
Copyright © 2011-2022 走看看