2009-11-08 61 views
0

我想實現一個進度條來監視文件上傳。該文件上傳到iframe中,服務器端的C#代碼實現緩衝區以上傳文件。它使用while循環來做到這一點,並且上傳性能對ASP.NET 3.5來說似乎很好,我真的不想使用第三方控件或複雜的上傳方案。每次處理都經過while循環時,它會使用它處理的字節數和總文件大小來更新會話變量。ASP.NET會話變量 - 由文件上傳 - 通過XMLHttpRequest讀取到另一頁

在客戶端,實現iframe上傳表單提交的按鈕也啓動一個Javascript setInterval(...)到一個函數,該函數將XMLHttpRequest用於另一個asp.net頁面,該頁面的唯一功能是讀取這些會話變量,迴應。寫出來。這些應該返回到回調函數並用於更新進度條。

從概念上講,這個工作原理和流程是可能的。我知道這是通過在我的上傳處理程序中放置一個斷點來停止上傳並在「ping」頁面中放置另一個斷點。我可以在調試器中來回切換,並觀察會話變量的設置和讀取。

不幸的是,沒有斷點,這在現實中並不完美。 ping頁面會熄滅,不會返回。直到上傳完成後纔會發生這種情況,在這一點上,它將很高興地取得最終結果。

由於這些是兩個單獨的頁面請求,我假設我有兩個單獨的線程,都嘗試使用相同的會話變量。由於這些由IIS產生,我沒有這些線程的句柄。上傳過程可能會使用會話變量以至於ping頁面無法獲取。另外,我讓系統鎖定了瀏覽器和IIS。我已經嘗試瞭解線程synchonization,但我不明白這足以在我沒有句柄的線程之間實現它。

會有人向我展示一些關於如何做到這一點的C#代碼?我可以找到示例代碼,但它們都創建了兩個線程,從而具有句柄。我可以在任一頁面中獲取當前線程,但頁面無法訪問彼此的線程。

謝謝你!

回答

相關問題