我有一个启动它的silverlight应用程序,它需要读取webservice返回的配置文件。
所以,在我的主页中,我想要这样的东西:
public MainPage()
{
InitializeComponent();
Config cfg = new Config();
XDocument config = cfg.getConfig();
//doing stuff with config here
...
}
config的构造函数调用readConfigAsnc,我有一个readcompleted方法返回xdocument。我希望在MainPage()中继续执行之前调用readConfigCompleted。这样做的最佳方法是什么?
答案 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'。