Я нахожусь в центре приложения Silverlight, и у меня есть функция, которая должна вызывать веб-сервис и использовать результат для завершения остальной части функции.
Моя проблема в том, что я бы обычно делал синхронный вызов веб-службы, получал результат и использовал его, продолжая функцию. Поскольку Silverlight не поддерживает синхронные вызовы веб-служб без дополнительных пользовательских классов, имитирующих его, я думаю, что было бы лучше использовать асинхронный поток, чем бороться с ним. Поэтому мой вопрос касается того, каков наилучший шаблон проектирования для работы с асинхронными вызовами в потоке программы.
В следующем примере я хочу использовать параметр myFunction TypeId в зависимости от возвращаемого значения вызова веб-службы. Но я не хочу вызывать веб-сервис, пока не будет вызвана эта функция. Как я могу изменить свой дизайн кода, чтобы разрешить асинхронный вызов?
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;
}
Спасибо заранее,
Mike