Silverlight等待异步调用

时间:2011-11-29 19:10:08

标签: c# .net silverlight wcf

我有一个启动它的silverlight应用程序,它需要读取webservice返回的配置文件。

所以,在我的主页中,我想要这样的东西:

public MainPage()
{
    InitializeComponent();
    Config cfg = new Config();
    XDocument config = cfg.getConfig();
    //doing stuff with config here
    ...
}

config的构造函数调用readConfigAsnc,我有一个readcompleted方法返回xdocument。我希望在MainPage()中继续执行之前调用readConfigCompleted。这样做的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

最好的方法是将其分为两种方法。将函数作为getConfig的参数传递,如下所示:

cfg.getConfig( fcnToCall );

稍后,在您的代码中,

void fcnToCall( XDocument config )
{
    //Do stuff with config here...
}

如果要保留局部变量,另一个选择是使用lambda表达式:

Config cfg = new Config();
cfg.Callback += new Action<XDocument> action = s => 
        {
            XDocument cfg = s as XDocument;
            //Do stuff with config here...
        };
cfg.getConfig();

答案 1 :(得分:3)

为什么不分开这些方法?而不是在MainPage()中发生所有这些,而是​​在GetConfigCompleted事件中发生'Do Stuff'。