[英]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.