Silverlight等待异步调用
我有一个silverlight应用程序启动它,它需要读取一个web服务返回的配置文件。Silverlight等待异步调用
所以,在我的主页,我想是这样的:
public MainPage()
{
InitializeComponent();
Config cfg = new Config();
XDocument config = cfg.getConfig();
//doing stuff with config here
...
}
的构造函数调用配置和readConfigAsnc我有一个方法的readcompleted,返回的XDocument。我想在执行继续MainPage()之前调用readConfigCompleted。做这件事的最好方法是什么?
最好的办法是把它分成两种方法。通过一个功能了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();
为什么不分离出这些方法?而不是在MainPage()中发生所有这些,在GetConfigCompleted事件中发生'Do Stuff'。
我想做的东西的大部分事情都在mainpage中。像UI元素等。 – Justin
Silverlight中最强大的部分是它的数据绑定......我敢打赌,你可以将大部分你试图操作的东西绑定到你的视图模型,从而增加你的项目的可维护性。 –
如何将XDocument配置参数传递给fcnToCall?现在,getConfig返回XDocument配置对象。 – Justin
您的getConfig(...)调用需要修改以接受委托。完成后,它应该调用该代理。您可以查看我的编辑,以了解设置接受一个参数的委托的示例(动作是一种默认的接受参数)。 –
DanTheMan
或者,你可以做我的第二个,并使用lambda表达式。 – DanTheMan