Lock
期待どおりに動作していません。コードは次のとおりです。ここではスレッドを適用していますが、 ASP.NETアプリケーションに適用します。
class Program
{
static void Main(string[] args)
{
ThreadManager.CurrentSession = 0;
for (int i = 0; i < 10; i++)
{
CreateWork objCreateWork = new CreateWork();
ThreadStart start = new ThreadStart(objCreateWork.ProcessQuickPLan);
new Thread(start).Start();
}
Console.ReadLine();
}
}
class CreateWork
{
private object CurrentSession = -1;
public void ProcessQuickPLan()
{
lock (CurrentSession)
{
CurrentSession = ThreadManager.CurrentSession;
Console.WriteLine(CurrentSession);
ThreadManager.CurrentSession = Convert.ToInt32(ThreadManager.CurrentSession) + 1;
}
}
}
class ThreadManager
{
public static object CurrentSession
{
get;
set;
}
}
それは私に次の出力を与えています
0
0
0
3
4
4
6
7
8
9
そして、私は期待しています
0
1
2
3
4
5
6
7
8
9
私はどこで間違っていますか?
readonly object
ここで説明されているよう に使用する必要がありますC# lock(mylocker) が機能しません