首页 新闻 会员 周边

关于计时器和委托之间的调用

0
悬赏园豆:50 [已解决问题] 解决于 2021-07-03 01:38

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace PTest
{
    class Program
    {
       
        static void Main(string[] args)
        {

            Xple x = new Xple();
            x.GGO();
        }
    }
     

    class Xple
    {
        System.Windows.Forms.Timer ntime;
        public void  GGO()
        {
            ntime = new System.Windows.Forms.Timer();
            ntime.Interval = 777;
            ntime.Tick += delegate
            {
                Console.WriteLine("进入计时器");
            };

            Pple a = new Pple();
            a.ldasd += delegate
            {
                Console.WriteLine("开始");
                ntime.Start();
            };

            a.GoWalk(1000);
            Console.Read();
        }
    }

 

    class Pple
    {
        public  delegate void MMethod();
        private System.Timers.Timer walk=new System.Timers.Timer();
        private int steps=0;
        public event MMethod ldasd;
        public void GoWalk(int t)
        {
            walk.Interval = t;
            walk.Elapsed += Walk_Elapsed;
            walk.Start();
        }
        private void Walk_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            Console.WriteLine("第"+(++steps).ToString()+"步");
            if (steps == 5)
            {
                ldasd();
            }
        }
    }

}

 

 

为什么能看到调用了Start() 方法,却不进入它的Tick事件 ?Console.WriteLine("进入计时器") 这句话没有执行。

C#
左眼水星的主页 左眼水星 | 初学一级 | 园豆:113
提问于:2017-08-21 18:48
< >
分享
最佳答案
0

System.Windows.Forms.Timer不适用于非winform界面的场景(需要ui线程),你可以换用System.Timers.Timer或者System.Threading.Timer

收获园豆:50
Daniel Cai | 专家六级 |园豆:10424 | 2017-08-21 19:03
其他回答(1)
0

有冲突的不,

男人要爽 | 园豆:6 (初学一级) | 2017-08-26 10:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册