可以编辑以下代码,以便执行第二种方法吗?

RKM*_*RKM 2 c#

无论如何在methodA完成之前调用methodB,以便执行methodB?我已经尝试了很多方法来实现它,但没有一个工作:(


谁能解释一下?谢谢.

public List<ObjectA> _OurObjectA= new List<ObjectA>();

public  List<ObjectA> methodA()
{

    List<ObjectA> products = new List<ObjectA>();
    ServiceReference1.ServiceClient client = 
      new ServiceReference1.ServiceClient();
    client.getProductCompleted += 
      new EventHandler<ServiceReference1.getProductCompletedEventArgs>(methodB);

    client.getProductAsync();

    return _OurObjectA;
}

void methodB(object sender, ServiceReference1.getProductCompletedEventArgs e)
{
    ObservableCollection<ServiceReference1.ObjectA> products = e.Result;
    foreach (ServiceReference1.ObjectA obj in products)
    {
        ObjectA temp = new ObjectA(obj);
        _OurObjectA.Add(temp);
    }
}
Run Code Online (Sandbox Code Playgroud)

Gio*_*lbo 6

看起来methodA调用Web服务.完成Web服务后,它会调用methodB.令人困惑的部分是这是异步的(通过事件处理程序)... methodA立即返回; 它不必等待Web服务完成.

这可能是因为服务需要很长时间(相对而言),所以在这种情况下你可以立即从methodA返回,做一些其他工作,当web服务完成时,methodB可以用从返回的数据做的事情做网络服务.这是对资源的更有效利用.有时这样做是为了让UI看起来不像是"悬挂".