Silverlight Web服务问题

Silverlight Web服务问题,silverlight,web-services,linq-to-sql,wcf,Silverlight,Web Services,Linq To Sql,Wcf,我有一个Web服务,它调用一个方法并返回一个通用列表。webservice completed方法如下所示(注意:名称和e.Result都是相同类型的列表): 我对Silverlight和Web服务还不熟悉,我可能有点过头了。我已经为此工作了一段时间,现在我觉得我需要寻求帮助。任何帮助都将不胜感激 在Silverlight中,对web服务的所有调用都是异步的(与WPF不同,WPF也可以使用同步调用) 这意味着调用web服务之后的代码将在服务向Silverlight客户端发送响应之前被调用 因此,

我有一个Web服务,它调用一个方法并返回一个通用列表。webservice completed方法如下所示(注意:名称和e.Result都是相同类型的列表):


我对Silverlight和Web服务还不熟悉,我可能有点过头了。我已经为此工作了一段时间,现在我觉得我需要寻求帮助。任何帮助都将不胜感激

在Silverlight中,对web服务的所有调用都是异步的(与WPF不同,WPF也可以使用同步调用)

这意味着调用web服务之后的代码将在服务向Silverlight客户端发送响应之前被调用

因此,在MainPage构造函数中,foreach循环在服务返回之前遍历集合,然后遍历空集合


正确的方法是第二种方法:在服务响应后,在专门用于此任务的回调方法中初始化集合:webservice_GetNameCompleted。

您必须等待WebServiceC回调完成。 通过default,所有Silverlight WCF web服务调用都是异步的。 您正在向Web服务发送请求,与使用WCF和Silverlight的.asmx不同,应用程序将继续运行,而不是等待Web服务返回结果

所以当你打电话时,比如:

public MainPage() 
{

}

应用程序不会停止并等待SetNames返回它刚刚执行的值,而且由于webservice尚未返回结果,因此在调用foreach时仍然有一个空白或空列表


干杯

谢谢。我不知道Web服务到底发生了什么,但我知道这与服务有关。谢谢你的知识。我也非常感谢这一点信息。一步一步地知道发生了什么很好。这肯定会帮助我推进这个项目。如果我的答案有用,你能投票支持吗。另外,如果严肃的回答回答了你的问题,你可以将他的回答标记为正确答案。声誉对我来说意义重大,所以:)干杯我当然可以也愿意。我很乐意。嗯,我现在不能投赞成票,但如果情况发生变化,我会投你的赞成票,因为这些信息确实帮助了我。
List<string> names = new List<string>();

public MainPage()
{
    InitializeComponent();
    SetNames();

    foreach (string name in names)
        textBox1.Text += name;
 }
private void webservice_GetNameCompleted(object sender, ServiceReference1.GetNameCompletedEventArgs e)
    {
       names = e.Result;

       foreach (string name in names)
          textBox1.Text += name;     
    }
public MainPage() 
InitializeComponent(); 
SetNames(); 

foreach (string name in names) 
    textBox1.Text += name;