2012-03-01 93 views
1

在.NET的web應用,我有下面的代碼模塊:第二個進程似乎使第一進程崩潰(.NET,C#)

protected void SaveButton_Click(object sender, EventArgs e) 
{ 
    //.. 

    itemRepository.Create(store, validFrom); 

    Item item = itemRepository.GetByStoreAndValidFrom(store, validFrom); 

    //.. 

} 

的項目是由信息庫中創建,然後取出來自數據庫。
有時候,f.ex.如果用戶非常快速地點擊了按鈕兩次,則看起來會發生以下情況:
該模塊的兩個程序進程(請更正,如果術語不正確!)開始非常接近彼此。創建兩個項目,第一個進程崩潰,因爲數據庫中有多個項目可用。
有沒有解決這個問題的好方法?我想過把一個JavaScript攔截器放入界面(以防止第二次按鈕點擊),但會感謝提示。

+0

沒有與流程啓動等有關的代碼,您能分享與流程啓動相關的內容嗎? – sll 2012-03-01 11:35:33

+1

這是一個網絡或桌面應用程序? – 2012-03-01 11:39:48

+0

嗨noah1989,剛剛編輯。 – AGuyCalledGerald 2012-03-01 11:40:48

回答

2

禁用啓動回發的控件將導致表單不被提交。

方式I solved用戶界面上的這個問題是添加另一個div,將顯示在Web表單頂部以防止重複提交。帶解決方案的原始文章是here

+0

只是爲了興趣,你是否處理多個用戶在幾乎同一時間只能允許執行一次的情況? – AGuyCalledGerald 2012-03-02 13:25:06

+1

對於多用戶或多進程場景,您應該使用Mutex並在受Mutex保護的關鍵部分內執行檢查和操作 – devio 2012-03-02 13:49:53

相關問題