所以我運行一個查詢和處理在返回同時使用一個名爲StartJob功能,將在我的工作工作行:阻止併發訪問的線程池
ThreadPool.QueueUserWorkItem(StartJob, job);
的偉大工程,是非常快。但是現在我被告知當查詢返回時,某些行可能具有與job.UserID相同的值,並且我們無法同時爲相同的job.UserID值運行StartJob函數。問題是:如何使StartJob塊執行,直到具有相同用戶ID的StartJob的任何其他實例都已完成?
我確定有一種方法可以獲得每個用戶ID鎖,但我不知道該怎麼做。謝謝您的幫助。
將不會有併發衝突如果您用同樣的job.UserID StartJob,直到它的目標是像一個文件中的一些共享資源或數據庫行。你可以在StartJob中展示你在做什麼? –
什麼版本的.NET? 3.5還是4.0? – xanatos
@invisible完全正確,我在StartJob中運行了更多查詢,鎖定了UserID所擁有的行,因此我們看到超時,因爲這些長時間運行的查詢正在鎖定這些行。所以我想用一些特定於UserID的鎖來啓動StartJob,並在那裏自由地阻止它。 – powlette