1

我是 Windows Phone 开发的新手。

我正在使用 for 循环为列表中的每个元素调用 web 服务。我想只有在获得服务结果后才能进入下一个循环。我的循环是这样的:

for (int i = 0; i < count; i++)
        {
            selectedInfo = lstReorderItems[i];
            if (string.IsNullOrEmpty(selectedInfo.ItemCostVariantValueIDs))
            {
                client.AddItemstoCartCompleted += client_AddItemstoCartCompleted;
                client.AddItemstoCartAsync(//params);
            }
            else
            {
                client.CheckItemQuantityInCartCompleted += client_CheckItemQuantityInCartCompleted;
                client.CheckItemQuantityInCartAsync(//params);
            }
        }

但循环继续,无需等待结果的到来。那么有人可以帮帮我吗?

4

1 回答 1

0

经过这个问题后,我的理解是,您正在进行系列网络服务调用。我认为这不好,因为要获得最终结果,用户必须等待,直到所有服务调用完成并且有机会在中途获得失败响应,这也会阻塞最终结果。所以去并行调用,以支持 WebClient 设计有后台选项。

如果完全有必要,则将循环变量声明为类成员

Public class xxxxxx
{
  int i = (startCount ) 0;

然后像往常一样启动服务,

 selectedInfo = lstReorderItems[i];
 if (string.IsNullOrEmpty(selectedInfo.ItemCostVariantValueIDs))
  {
        client.AddItemstoCartCompleted += client_AddItemstoCartCompleted;
        client.AddItemstoCartAsync(//params);
  }

在服务响应完成事件中,在您的情况下,client_AddItemstoCartCompleted 在增加循环变量后调用相同的服务,在此之前您必须将循环变量与计数进行比较

if(i< count)
{
 i++;
 selectedInfo = lstReorderItems[i];
 if (string.IsNullOrEmpty(selectedInfo.ItemCostVariantValueIDs))
   {
      client.AddItemstoCartAsync(//params);
   }
}
于 2013-05-30T06:18:08.147 回答