У меня есть веб-приложение silverlight 4, которое должно обмениваться данными с сервером посредством доступа к веб-службе ASMX на сервере.У меня есть список (да, массив) объектов, которые мне нужно отправить (один за другим) в качестве параметра службы.Однако перебирая список и запуская метод (objecttosend);не будет работать, потому что мне нужно отправлять потом одну за другой, и Silverlight, кажется, поддерживает только Async (предположительно, не блокировка интерфейса - имеет смысл).
Итак, я попробовал это:
public void SendNextPart()
{
if (partsToSend.Count > 0)
{
Part thisPart = partsToSend.Dequeue();
fuWS.createPartCompleted += new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(fuWS_createPartCompleted);
fuWS.createPartAsync(thisPart);
}
}
Queue<Part> partsToSend = new Queue<Part>();
void fuWS_createPartCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
SendNextPart();
}
Который, насколько я понимаю, проверит, есть ли в списке части для отправки, затем запустите метод веб-службы (называемый fuWS) и удалите эту часть из списка partsToSend.Как только он получает завершенное событие, он должен затем снова запустить метод SendNextPart и отправить следующую часть.
Однако, что происходит (обнаружил это, наблюдая за HTTPwatch), это то, что он отправляет первую часть, а затемотправляет 2 части сразу, а затем все больше и больше, все сразу.Почти как если бы он получал завершенное событие, прежде чем он фактически отправил на сервер и успешно запустил метод.
Пожалуйста, помогите, это чертовски неприятно для меня, и это полностью нарушает то, что мне нужно сделать: '(