本帖最后由 bdmh 于 2014-09-19 13:50:12 编辑

解决方案 »

  1.   

    额  我这只是测试  其实这个for循环是测试用的。实际是要从数据库里取数据动态创建timer
      

  2.   

    额  我这只是测试  其实这个for循环是测试用的。实际是要从数据库里取数据动态创建timer用tag存你的参数,在下面用
      

  3.   

    你不如用多线程做
    就算创建了多个timer,其实还是都在主线程里啊,这样做有任何意义?
      

  4.   


    for (int i = 0; i < 3; i++)
                {
                    new System.Timers.Timer().Elapsed += (sender, e) =>
                        {
                            var index = i;
                            ...
                        };
                }
      

  5.   

    如果方便传递参数,可以自己继承timer,写一个自己的timer类即可        class MyTimer : System.Timers.Timer
            {
                int num;
                public int GetNum()
                {
                    return num;
                }
            }
      

  6.   

    额  我这只是测试  其实这个for循环是测试用的。实际是要从数据库里取数据动态创建timer用tag存你的参数,在下面用System.Timers.Timer这个定时器不是form拖进来的 没有tag属性!!!
      

  7.   

    可以把taskTime_Elapsed放到一个放状态的类中:class Worker
    {
        public Worker(int i)
        {
            this.i = i;
        }    int i;
        public void taskTime_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            //我这里想获取到上面传过来的参数
            Console.WriteLine(i);
            System.Timers.Timer t = (System.Timers.Timer)sender;
            t.Enabled = false;
            t.Close();
        }
    }for (int i = 1; i <= 3; i++)
    {
      taskTime.Elapsed += new Worker(i).taskTime_Elapsed;
    }
    当然也可以用C#的闭包 (Closure),不过基本原理也大致相同。
      

  8.   

    5楼lineages朋友的例子就是‘闭包’。例子里面有个错误,局部变量要放在闭包’外面:
     for (int i = 0; i < 3; i++)
    {
        var index = i;  //放在闭包’外
        new System.Timers.Timer().Elapsed += (sender, e) =>
        {
            Console.WriteLine(index);  // 使用closure
        };
     }
     
      

  9.   

    怎么可能,你试了吗?
    有任何变量会没有tag属性的?反正暂时我是没见过.
      

  10.   

    怎么可能,你试了吗?
    有任何变量会没有tag属性的?反正暂时我是没见过.
    没有tag
      

  11.   


    这样不行!!刚刚测试了  听我的,继承一个timer
      

  12.   


    这样不行!!刚刚测试了  听我的,继承一个timer

    你能帮我写下简单的例子么 就我上面的代码!!嘿嘿,谢谢哈
      

  13.   

    怎么可能,你试了吗?
    有任何变量会没有tag属性的?反正暂时我是没见过.
    没有tag
    自己随手测试了一下,确实没有.
    是我脑残了
      

  14.   


            class MyTimer : System.Timers.Timer
            {
                int num;
                public int GetNum()
                {
                    return num;
                }
                public void SetNum(int value)
                {
                    num = value;
                }
            }
            void taskTime_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                MyTimer t = (MyTimer)sender;
                t.Enabled = false;
                t.Close();
            }
            private void button1_Click(object sender, EventArgs e)
            {
                //string id = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
                //var y = Assembly.Load(id);
                for (int i = 1; i <= 3; i++)
                {
                    MyTimer taskTime = new MyTimer();
                    //我这里想把i传到taskTime_Elapsed里  然后方法里使用!因为是多个,全局参数不能用
                    taskTime.Interval = i * 1000;
                    taskTime.SetNum(i);
                    taskTime.Enabled = true;
                    taskTime.AutoReset = true;
     
                    taskTime.Elapsed += new System.Timers.ElapsedEventHandler(taskTime_Elapsed);
                }
            }
      

  15.   


    加了这个代码报错啊未能找到任何适合于指定的区域性或非特定区域性的资源。请确保在编译时已将“GAKeyAnalysis.FrmCPGrabByIndeed.resources”正确嵌入或链接到程序集“GAKeyAnalysis”,或者确保所有需要的附属程序集都可加载并已进行了完全签名。  
      

  16.   

    你这个错跟timer有什么关系,别瞎联系
      

  17.   


    我把这继承timer那个类放在.designer.cs这个文件里就可以了!!这是为什么
      

  18.   


    我把这继承timer那个类放在.designer.cs这个文件里就可以了!!这是为什么因为它“输给你了”。