変数またはプロパティの値に基づいてコードをロックする必要があります。私のメソッドが呼び出されていると仮定し、UserData オブジェクトを渡します。
UserData contains two properties
UserID and Marks
そして、現在のロックコードは次のようになっています
var l=new Object();
lock(l)
{
//Update marks of a particualr user id to UserData.Marks
}
これで、このメソッドに付属するすべてのものがロックされます。たとえば、UserID=1 のマークを更新しているとします。他のユーザー ID の今後の呼び出しは引き続きロックされます。ロック、この場合はユーザー 1. その他は自由に移動する必要があります。
私が考えていたのは、ロック用の新しいオブジェクトを作成するのではなく、ユーザー ID のプロパティを含むロック用のカスタム クラスを作成することです。リクエストが来ると、その特定の値に基づいてロックを作成します。これが可能かどうかさえわかりません。親切に私を正しい方向に導いてください。