zoukankan      html  css  js  c++  java
  • 异步或多线程支持一个任务执行完成

    贴一个简单的代码

    1:多线程

    public class Class1
        {
            public Class1()
            {
                Timer timer = new Timer();
                timer.Enabled = true;
                timer.Interval = 500;
                timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
                Console.Read();
            }
            int n = 0;
            void timer_Elapsed(object sender, ElapsedEventArgs e)
            {
                n++;
                System.Threading.Thread t = new System.Threading.Thread(
                    new System.Threading.ParameterizedThreadStart(newThread));
                t.Name = n.ToString();
                t.Start(n);
            }
            void newThread(object n)
            {
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine("n=" + n + " => i=" + i + "");
                    System.Threading.Thread.Sleep(1000);
                }
               Console.WriteLine("线程" + System.Threading.Thread.CurrentThread.Name + "结束");
               System.Threading.Thread.CurrentThread.Abort();
               System.Threading.Thread.CurrentThread.Join();
            }
        }

    2:委托

     public class Class2
        {
            public Class2()
            {
                Timer timer = new Timer();
                timer.Enabled = true;
                timer.Interval = 500;
                timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
                Console.Read();
            }
            int n = 0;
            void timer_Elapsed(object sender, ElapsedEventArgs e)
            {
                n++;
                Working(n);
            }
            private delegate void DelegateReceiveData(int n);
            private void CallBackMethod(IAsyncResult ar)
            {
                try
                {
                    DelegateReceiveData dn = (DelegateReceiveData)ar.AsyncState;
                    dn.EndInvoke(ar);
                }
                catch (Exception ex)
                {
                   
                }
            }
            private void ReceiveData(int n)
            {
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine("n=" + n + " => i=" + i + "");
                    System.Threading.Thread.Sleep(1000);
                }
            }
            protected void Working(int n)
            {
                DelegateReceiveData dn = new DelegateReceiveData(ReceiveData);
                AsyncCallback acb = new AsyncCallback(CallBackMethod);
                IAsyncResult iar = dn.BeginInvoke(n, acb, dn);
            }
        }

    结果:

  • 相关阅读:
    《架构漫谈》有感
    《掌握需求过程》阅读笔记三
    《掌握需求过程》阅读笔记二
    《掌握需求过程》阅读笔记一
    《代码阅读方法与实现》阅读笔记三
    《代码阅读方法与实现》阅读笔记二
    《代码阅读方法与实现》阅读笔记一
    《软件需求模式》阅读笔记三
    《软件需求模式》阅读笔记二
    第二阶段个人总结06
  • 原文地址:https://www.cnblogs.com/KimhillZhang/p/3011980.html
Copyright © 2011-2022 走看看