簡體   English   中英

如何在ASP.NET中同步線程

[英]How to synchronize threads in ASP.NET

我有ASP.NET應用程序,其代碼類似於針對Web請求執行的代碼:

ProcessAction(actionId)

我想確保不會對同一actionId同時執行ProcessAction,因此我需要執行以下操作:

WaitIfActionWithIdIsExecuting(actionId) 
ProcessAction(actionId)

我應該使用哪種.NET同步機制? 互斥體,監視器,AutoResetEvent,ManualResetEvent?

線程需要等待的情況非常少見。

您可以從id創建一個字符串並在該字符串中進行內插,以確保ID始終具有相同的字符串實例,並使用該字符串作為標識符進行鎖定:

lock (String.Intern(actionId.ToString())) {
  ProcessAction(actionId);
}

您可以使用鎖,但是在Web上下文中,我寧願通過數據庫進行同步。 為操作創建一個表,其中帶有“狀態”列以表示操作的狀態(進行中,待處理,已完成等)。當然,這取決於您的特定任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM