У меня есть веб-приложение silverlight 4, которое должно связываться с сервером, обратившись к веб-службе ASMX на сервере. У меня есть список (да, массив) объектов, которые мне нужно отправить (один за другим) в качестве параметра для службы. Однако перебираем список и запускаем метод (objecttosend); не будет работать, потому что мне нужно отправить один за другим, а Silverlight, похоже, поддерживает только Async (предположительно, чтобы не блокировать интерфейс - имеет смысл).ASMX webservices с Silverlight Async confusion
Так что я попытался это:
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();
}
Который, насколько я понимаю, будет проверять, чтобы увидеть, если список имеет части для отправки, а затем запустить WebService метод (называемый fuWS) и удалить, что часть из списка «Отправить список». Как только он получит завершенное событие, он должен снова запустить метод SendNextPart и отправить следующую часть.
Однако то, что происходит (это видно из просмотра HTTPwatch), заключается в том, что он отправляет первую часть, а затем отправляет сразу две части, а затем после этого все больше и больше. Почти так, как будто он получает завершенное событие до того, как оно действительно отправлено на сервер, и успешно запустить метод.
Пожалуйста, помогите, это до чертиков из меня, и это полностью разрушает то, что мне нужно сделать: '(
Отправьте код функции, которая вызывает отправку следующей части. Отправьте код для SendNextBuffer. – BigChrisDiD
Эй, извините, ive отредактировал оригинальную часть. Благодарю. – Matt