1.c# 单列模式的类中提供了一个读数据库列表的方法,由于某中不明原因,该方法被前端同一个请求反复调用了多次(不足几个毫秒)
2.在方法中尝试过SemaphoreSlim或AsynLock,都不能阻档多个线程同时进入方法体,产生了多个线程id
3.但是,在for循环看也加了lock,这里有看到为同一线程id。
private SemaphoreSlim lockSlim=new SemaphoreSlim(1,1);
private readonly static object lockObj=new object():
public dynamic GetData(int id)
{
lockSlim.Wait();
//打印出了多个线程id
for(...)
{
lock(lockObj)
{
//这里只打印出一个线程id
}
}
lockSlim.Release();
}