在step1()方法里面执行成功的地方调用step2(),在step2()执行成功的地方调用step3(),以此类推,或者使用timer控件检测,搞一个全局变量,在step1执行成功的地方设置全局变量值,然后在timer里面判断全局变量值,然后执行step2等,建议用第一种方法

解决方案 »

  1.   

    创建公共变量放置4个线程运行结果,
    在运行线程前先请清空,
    不你的线程反馈的结果是一个int
    那么定义
    int result1;
    int result2;
    int result3;
    int result4;调用线程前,以上变量清空,
    然后在线程调用函数结尾处赋值。
    最后在主进程中判断。
    不过主进行中在每个调用线程后需要设置等待,否则程序直接执行完了。所以,你的逻辑本身就是有问题的,按你的要求此处线程不合理,因为step2依赖于step1的结果,这种情况直接写在进程里即可。
      

  2.   

    用委托实现delegate string funStep1Del();
    funStep1Del del= new funStep1Del(funStep1);
    IAsyncResult re= del.BeginInvoke();
    string result = del.EndInvoke(re); //在这里获取返回值
    string funStep1();
      

  3.   

    好比你要出去旅游,分4个步骤
    1.订酒店
    2.订飞机票
    3.打车
    4.收拾行李要想保证中间不出差错,你应该一步一步来,如果订不到酒店,就不要订飞机票了
    如果想保证速度,可以同步进行,但是就会有一个问题,如果行李都收拾好了,但是订不到酒店,你的行程就必须取消了
    可以定义个全局bool变量,任何一步没有成功,都将它置为false
    等4个步骤都执行完,判断一下,然后进行后续处理
      

  4.   


    请问 step1 里面 怎么 判断 funStep1 是否结束 ,  funStep1是个耗时操作,因为这里不希望界面假死,所以用了线程
      

  5.   

    step1里为什么要判断funStep1结束?
    它不过是个方法,是启动线程用的,启动完就没它什么事了.
    主线程想判断所有线程结束,你可以再开个线程5,在线程5里执行1234,然后thread.join(),等待开启的线程全部结束,然后执行后面的方法