我有一個控件可以將1..n個文件分塊上傳到我的WCF服務。分塊和重組是通過對WCF服務的多次調用完成的,對於1個文件來說都是很好的。如何阻止Silverlight,直到進行一系列異步WCF調用?
但是,當我有超過1個文件,我遇到了一些問題。包含每個文件的數據的外部循環在第一個文件完成上傳之前繼續。事實上,如果需要10次調用通過WCF調用將文件分塊到服務器,則處理將在第一次調用WCF之後返回,因爲它是異步的,不會阻塞。整個過程由上傳按鈕點擊啓動,所以我認爲這是在UI線程上完成的。我曾嘗試使用'AutoResetEvent'但無濟於事;它總是凍結。
我需要的是外循環停止處理,直到1..n異步調用(通過ProcessFile方法)內的WCF完成並且整個單個文件已被上傳。下面的代碼:
'FileUploadData is an Observable collection of IO.FileInfo objects
For Each FileItem In FileUploadData
'Method internally calls WCF asynchronously and does so continually until file is completely uploaded.
ProcessFile(FileItem)
'NEED TO STOP HERE until file passed in above is complete.
'Currently processing continues on because 1st call to WCF is async and processing is returned to here.
Next
我不一定要找這裏syncronous解決方案,但我需要一些方法,讓這些文件既可以在他們自己線程上傳或「ProcessFile」方法1日完全上傳(仍然調用WCF異步),然後繼續外循環到上面顯示的下一個文件。
關於如何解決這個問題的任何想法?謝謝!
在繼續之前,您需要等待上傳發送完成的事件。這意味着將算法從循環改變爲不同的東西。 – ChrisF 2012-02-07 15:42:29