【发布时间】:2010-05-06 18:24:52
【问题描述】:
我在 Silverlight 应用程序的中间,我有一个需要调用 web 服务的函数,并使用结果完成其余的函数。
我的问题是我通常会做一个同步的 Web 服务调用得到结果并使用该函数进行。由于 Silverlight 不支持没有其他自定义类来模仿它的同步 Web 服务调用,我认为最好采用异步流程而不是与之抗衡。所以我的问题与在程序流中处理异步调用的最佳设计模式有关。
在以下示例中,我想根据 Web 服务调用的返回值使用 myFunction TypeId 参数。但是在调用此函数之前,我不想调用 Web 服务。如何更改我的代码设计以允许异步调用?
string _myPath;
bool myFunction(Guid TypeId)
{
WS_WebService1.WS_WebService1SoapClient proxy = new WS_WebService1.WS_WebService1SoapClient();
proxy.GetPathByTypeIdCompleted += new System.EventHandler<WS_WebService1.GetPathByTypeIdCompleted>(proxy_GetPathByTypeIdCompleted);
proxy.GetPathByTypeIdAsync(TypeId);
// Get return value
if (myPath == "\\Server1")
{
//Use the TypeId parameter in here
}
}
void proxy_GetPathByTypeIdCompleted(object sender, WS_WebService1.GetPathByTypeIdCompletedEventArgs e)
{
string server = e.Result.Server;
myPath = '\\' + server;
}
提前致谢, 迈克
【问题讨论】:
标签: silverlight design-patterns asynchronous