2010-11-19 61 views
0

我有一個簡單的表單發送電子郵件到預定義的用戶列表的aspx頁面。在較長的列表中,在電子郵件完成發送之前,頁面通常會超時,但這從來都不是問題。ASPX的多個回發頁面

今天發生了一些奇怪的事情,每個用戶都收到了四封電子郵件。在日誌中,我可以看到三個新線程一次一個啓動,並從列表開始處重新開始發送。

任何想法?我絕對知道我自己並沒有故意刷新網頁,當然也不是三次。但是瀏覽器(IE8)能做到嗎?它會在超時後再次嘗試重新建立連接嗎?或者當我從另一個應用切換回瀏覽器窗口?我從來沒有見過這樣的行爲。

回答

0

第一個問題是,是否有任何理由要同步執行長時間運行的任務,即鎖定一個應該提供web請求的線程,以便在後臺完成某些事情,而瀏覽器坐在並等待它可能不會得到的迴應。我會考慮異步運行這個,除非有一個非故意的理由不這樣做。

其次,您是否研究過創建某種鎖定機制,以便該過程不能多次啓動?我有一些進程嚮應用程序緩存添加令牌(並在完成後將其除去),以便如果令牌存在,進程將不會再次運行(不會調用異步任務),而且做這項工作。這樣,無論多少客戶調用您的代碼都無關緊要,您可以防止發生的事情超出他們應有的程度。

+0

這是一個快速和骯髒的功能,應該在另一個應用程序中實現。你知道這是怎麼回事,十年後的yadda yadda。無論如何,同步運行並不是一個問題,但指出,有更好的方法來實現。我可以肯定地投入鎖定,謝謝。我只希望我知道爲什麼會發生這種情況。 – Leslie 2010-11-19 21:57:57