一个Winform中有三个方法执行顺序为 A--> B--> C,要求AB和BC之间都要有个时间延迟个5秒,请问是如何做的?
用了Threading.sleep,这里是不行的,会出现假死现象而且到最后才会一步显示出来,向高手请教了。

解决方案 »

  1.   

    用Timer或创建一个线程处理。
      

  2.   

    作一个委托数组,然后每隔5秒调用下一个委托就行了可以用timer控件+全局变量来实现
      

  3.   

    Timer事件定时触发循环的事件而且ABC间是有顺序关系,后面两个都要依赖前一事件所获取的参数。
    有没有个示例程序的?
      

  4.   

    Timer事件定时触发循环的事件而且ABC间是有顺序关系,后面两个都要依赖前一事件所获取的参数。 
    有没有个示例程序的?
    ------------------------------------------------------
    这样你可以创建一个线程来处理:Thread thread=new Thread(proc);
    thread.Start();void proc()
    {
      A();
      Thread.sleep(5000);
      B();
      Thread.sleep(5000);
      C();
    }
      

  5.   

    使用Thread.sleep(5000)会出现假死的现象,而且Winform到最后一步才会全部显示。
      

  6.   

    所以wzd24的方法新开了线程
    Thread thread=new Thread(proc);
    thread.Start();
    这里的Thread.Sleep(5000)是新开了线程的Sleep,不是UI线程的Sleep
      

  7.   

    delegate void dosmthing();
    dosmthing[] do1=new dosmthing[3];
    int flagi=0;
    ...
    do1[0]=new dosmthing(this.aaa);
    do1[1]=new dosmthing(this.aaa);
    do1[2]=new dosmthing(this.aaa);
    ...
    private void timer1_Tick(object sender, System.EventArgs e)
    {
    this.do1[this.flagi]();
    }
      

  8.   

    用ThreadPool得RegisterWaitForSingleObject的方法,可以实现你要的功能。
      

  9.   

    使用Thread.sleep(5000)会出现假死的现象,而且Winform到最后一步才会全部显示。
    ------------------------------------
    可以调用相应的委托更新界面数据再sleep
      

  10.   

    Timer事件定时触发循环 可以实现
      

  11.   

    使用timer比较简单,如果里面有复杂的业务逻辑,考虑使用线程和委托技术。