我现在的问题是,  程序边执行test,将test继续往下走,然后timer也在走。我只想将timer走完  再继续将test 后面的其他方法

解决方案 »

  1.   

                AutoMeterTimeTimer = new System.Timers.Timer();
                AutoMeterTimeTimer.Elapsed += new System.Timers.ElapsedEventHandler(AutoMeterTimeTimer_Elapsed);
                AutoMeterTimeTimer.Interval = 1000;
                AutoMeterTimeTimer.Start();
    while (AutoMeterTimeTimer.Enabled)
    {
        Application.DoEvents();
        Thread.Sleep(100);
    }
    后面的代码
      

  2.   

           Task.Factory.StartNew(() =>
                        {
                             //TODO  循环+后续方法
                        });以上相当于新起了一个异步线程,不会阻塞UI至于await async 我想你用不到了 task
    http://msdn.microsoft.com/zh-cn/library/system.threading.tasks.task(v=vs.110).aspx
      

  3.   


    class Test
        {        System.Timers.Timer AutoMeterTimeTimer;
            DateTime startTime = DateTime.Now;
            public  void test()
            {
                //自动抄表定时器
                AutoMeterTimeTimer = new System.Timers.Timer();
                AutoMeterTimeTimer.Elapsed += new System.Timers.ElapsedEventHandler(AutoMeterTimeTimer_Elapsed);
                AutoMeterTimeTimer.Interval = 10000;
                AutoMeterTimeTimer.Start();
                while (AutoMeterTimeTimer.Enabled)
                {
                    Application.DoEvents();
                    Thread.Sleep(1000);
                }
            }        //最终抄表结果
            private void AutoRecordReport()
            { }        void AutoMeterTimeTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                if ((DateTime.Now - startTime).TotalMinutes < 2)
                {
                    AutoRecordReport();
                }
                else
                {
                    AutoMeterTimeTimer.Close();
                }
            }
        }