1.检查调用方法是否为多实体调用
例:多实体调用
cameraCtrl[intChannel]里不同的线程进来值是不一样的,线程锁在Initial方法中
这种情况下线程锁会失效
在线程锁中添加3秒延时观察
可以看到线程锁失效,线程并没有等待,而是同一时刻同进同出
解决方案
1.注意多实体调用时添加线程锁延时错开
如图,添加线程锁进行延时,编辑后,进锁出锁均有延时错开,不会冲突
2.解决方案2
可以把多实体调用放在同一个接口里,先锁,再去进行多实体调用则不会出现问题,这里不贴图了
其他笔记:
线程ID打印
"线程ID:" + Thread.CurrentThread.ManagedThreadId, "Camera connection failed."
VS输出线程ID打印
Console.WriteLine($"{DateTime.Now.ToString()}:线程【{Thread.CurrentThread.ManagedThreadId}】In");
Console.WriteLine($"{DateTime.Now.ToString()}:线程【{Thread.CurrentThread.ManagedThreadId}】Out");