【发布时间】:2017-01-11 11:00:13
【问题描述】:
在我的 Silverlight 应用程序中。我必须使用 WCF 服务。现在的问题是我想在 for 循环中同步使用异步 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
}
问题是因为服务是异步的。很难同步消费服务。最初我将第二个服务调用放在第一个服务调用的完成方法中。第三个放在完成方法的第二个等中。
但在 for 循环中,长度是不同的。我们不知道号码。而且服务是一样的,只是传入不同的整数。
顺便说一句,我使用 Visual Studio 2010,.NET 4。所以我不能使用 async/await 技能。 感谢帮助。
编辑
因为服务是异步的,所以有时候GetCurrentDateTimeServiceCall(i);下面的代码可能会先运行。例如,list = a[i]*.895+a[i]*a[i]; 在服务调用之前运行。这不是预期的。我无法访问服务端代码。此外,我无法触摸应用程序配置,因为它在我们的数据访问层框架中。所以也许我需要一个标志或事件或 while 循环来强制整个流程同步运行。
【问题讨论】:
-
@PeterBons。不要这么想。它需要 Visual Studio 2012 和 Nuget。我在 Visual Studio 2010 中没有它们。
-
啊太糟糕了..我的错误,不知道 2012 年是最小值
标签: c# .net wcf asynchronous