步骤1:我指定id的值为零。
第2步:我尝试通过服务返回更新Id值。但它没有立即更新。
第3步:所以_objsomeClass.SetId = id; value设置为零。 在这里,我需要为_objsomeClass.SetId
分配服务返回值步骤4:执行For循环后,值_objsomeClass.SetId = id;从Webservice返回值。
我需要设置在for循环执行之前从webservice返回的值吗?
public void Save_Click(object sender, RoutedEventArgs e)
{
int id= 0;
Service.Client Clientobj = new ChatACDService.ChatACDServiceClient();
Clientobj .GetIdCompleted += (s, ev) =>
{
id = ev.Result;
};
Clientobj .GetIdAsync();
_objsomeClass.SetId= id;
for (int i = 0; i < Agent.Items.Count; i++)
{
//Some Process
}
}
答案 0 :(得分:1)
如果我正确地阅读你的问题,我想我会看到你的问题。问题是您调用的GetIdAsync方法不会像名称所示阻止代码执行。您需要做的是将该循环移动到GetIdCompleted块中,以便在Web服务调用结束后运行。
还有其他管理异步返回的方法,我个人最喜欢的是Rx框架,它非常适合将异步调用链接在一起,查看https://msdn.microsoft.com/en-us/data/gg577609.aspx