是这样的,我的form load的时候需要加载一些需要的信息,所以要call 2个异步方法,我也不知道什么时候2个都完成,也不知道哪个先完成。但是我需要2个都完成 才能继续。。 我需要一个方法,不需要自己flag,似乎.net framework已经提供的class可以用,听说比如semaphore autoresetevent mutex等,还没认真去读这些,现在需要一个一般解决这个问题的最优方法。望达人提供思路,若code就更好了。
小弟感谢了。

解决方案 »

  1.   

    当然,既然只有两个,使用两个 ManualResetEvent 也是可以的。
      

  2.   


    谢谢sp1234,想请问你,.net提供2种异步模式,一个是基于iAsyncResult接口的,还有是基于事件event based Asynchronous pattern.我现在call的是基于时间的,也就是 xxxAsync() 这种,当callback回来时候,xxxCompleted(....) 这个方法是UI Thread的是吗?我现在有个问题,不知道是不是线程引起的。当我一个Form尝试call2个这种异步的方法的时候,似乎callback不回来。望sp1234兄指点迷津。谢了!
      

  3.   

    我在form_load里面等待 好像会导致callback不回来不确定。
      

  4.   

    ManualResetEvent mre1;
    ManualResetEvent mre2;Public Form
    {
    ......
    mre1 = new ManualResetEvent(false);
    mre2 = new ManualResetEvent(false);
    }Form_Load(..................)
    {
    CallAsync1();
    CallAsync2();if (!mre1.WaitHandle(3000))
    {
    }
    if (!mre2.WaitHandle(3000))
    {
    }
    }Async1(.........)
    {
    .....
    .....
    mre1.Set();
    }Async2(.........)
    {
    .....
    .....
    mre2.Set();
    }