在Silverlight应用程序中使用Webservice

时间:2015-07-07 07:34:38

标签: c# wpf web-services silverlight

步骤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
    }
}

1 个答案:

答案 0 :(得分:1)

如果我正确地阅读你的问题,我想我会看到你的问题。问题是您调用的GetIdAsync方法不会像名称所示阻止代码执行。您需要做的是将该循环移动到GetIdCompleted块中,以便在Web服务调用结束后运行。

还有其他管理异步返回的方法,我个人最喜欢的是Rx框架,它非常适合将异步调用链接在一起,查看https://msdn.microsoft.com/en-us/data/gg577609.aspx