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();
            }
        }
  • 相关阅读:
    vue-router在两个以上子路由的情况下,跳转出错
    全局window下添加可变量
    nuxtjs 环境中添加全局axios
    nuxt.js 初始化 npm run dev 报错
    replace的回调函数。
    JS面向对象的类 实例化与继承
    DOM事件: DOM事件级别、DOM事件流、DOM事件模型、DOM事件捕获过程、自定义事件
    sync 简单实现 父子组件的双向绑定
    cube-ui 重构饿了吗Webapp的 scroll-nav域名插槽问题
    在element table中导出指定列信息
  • 原文地址:https://www.cnblogs.com/25miao/p/9862525.html
Copyright © 2011-2022 走看看