我有一個silverlight 4 web應用程序需要通過訪問服務器上的ASMX web服務與服務器進行通信。 我有一個列表(是的,數組),我需要發送(一個接一個)作爲參數的服務的對象。然而循環遍歷列表並運行該方法(objecttosend);將無法工作,因爲我需要發送一個又一個,Silverlight似乎只支持異步(大概不鎖定接口 - 有道理)。ASMX webservices與Silverlight異步混淆
所以,我想這一點:
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();
}
其中,據我能理解它,將檢查如果列表中的部分,以發送,然後運行Web服務(稱爲fuWS)方法,並刪除部分來自partsToSend List。一旦它獲得完成的事件,它應該再次運行SendNextPart方法併發送下一部分。
然而,發生的事情(通過觀看HTTPwatch得到的)是它發送第一部分,之後是一次發送2個部分,然後是越來越多,一次發送。就好像它在實際發送到服務器併成功運行該方法之前接收完成的事件。
請幫幫忙,這是竊聽了我的地獄,並且它完全打破了我需要做的:'(
發送調用發送下一部分的函數的代碼。發佈SendNextBuffer的代碼。 – BigChrisDiD 2010-07-20 03:29:45
嘿,對不起,我編輯了原來的部分。謝謝。 – Matt 2010-07-20 08:09:31