В моем приложении Silverlight. Я должен потреблять услуги WCF. Теперь вопрос в том, что я хочу синхронно использовать асинхронную службу wcf для цикла.Потребляйте асинхронный сервис wcf синхронно в цикле
Услуга является своего рода
private void GetCurrentDateTimeServiceCall(int i)
{
ExportWcfClient proxy = new ExportWcfClient();
proxy.GetCurrentDateTimeCompleted += ProxyGetCurrentDateTimeCompleted;
proxy.GetCurrentDateTimeAsync(i);
}
Теперь я вызвать службу в коде.
for(int i=0;i<length;i++)
{
a[i] =something;
GetCurrentDateTimeServiceCall(i);
list = a[i]*.895+a[i]*a[i];
blah blah
}
Вопрос в том, что сервис асинхронный. Трудно усваивать услугу синхронно. Первоначально я положил второй вызов службы внутри завершенного метода первого вызова службы. Третий помещается во второй из завершенных методов и т. Д.
Но в петле цикла длина различна. Мы не знаем номер. И сервис тот же самый, просто передают в нем различное целое число.
Кстати, я использую Visual Studio 2010, .NET 4. Поэтому я не могу использовать навыки async/await. Спасибо за помощь.
Редактировать
Поскольку служба является асинхронным, так что иногда код ниже GetCurrentDateTimeServiceCall(i);
может работать первым. Например, перед вызовом службы прогоните list = a[i]*.895+a[i]*a[i];
. Этого не ожидается. Я не могу получить доступ к коду службы. Также я не могу трогать конфигурацию приложения, как это происходит в нашей структуре уровня доступа к данным. Поэтому, возможно, мне нужен флаг или событие или цикл while, чтобы заставить весь поток работать синхронно.
К слову, вы можете: https://blogs.msdn.microsoft.com/bclteam/2012/10/22/using-asyncawait-without-net-framework-4-5/ –
@PeterBons. Не думайте так. Это требует Visual Studio 2012 и Nuget. У меня их нет в Visual Studio 2010. – Bigeyes
ah too bad..my ошибка, не знаю, 2012 был минус –