可能是一個簡單的解決方案的長問題,但這裏有...如何在客戶端知道HTTP處理程序何時完成處理?
我有一個自定義的silverlight控件,用於選擇多個文件並將它們發送到服務器。它使用WebCLient控件的OpenWriteAsync方法將文件發送到常規處理程序(FileReciever.ashx)。
基本上,Silverlight的代碼做這樣的每個文件:
WebClient client = new WebClient();
client.OpenWriteCompleted += (sender, e) =>
{
PushData(data, e.Result);
e.Result.Close();
data.Close();
};
client.OpenWriteAsync(handlerUri);
服務器側處理程序僅讀取輸入流,然後做一些更多的處理與所得到的字節數組。
問題是客戶端OpenWriteCompleted是在所有數據通過線路發送後立即完成的。然後我的代碼將繼續使用下一個文件。我真正想要的是等到ASHX處理程序完成它的所有處理請求。我怎麼做? WebClient上的任何等待機制?我可以在處理程序中的HttpContext上做任何回調?我應該使用其他類型的轉移技術嗎?請指教!
像這樣的東西可能會工作 - 但我希望有另一種方式,內置的東西,不涉及像這樣的單獨的服務。 – 2008-09-30 11:28:05