在多线程检查chanel的status时出现异常
public bool VerifyConnection()
{
if (clt == null)
{
return OpenClient();
}
else if (clt.State != CommunicationState.Opened)
{
return OpenClient();
}
return true;
}
第一个线程进来运行OpenClient()的时候(timeout 2s), 另一个线程进来, 奇怪的是clt.State 有时候是opened, 有时候是opening, opening还可以理解, 但是opened作何解呢? 是不是这个state不准?
求助问题如何解决。
谢谢。
------解决方案--------------------
没加锁?
------解决方案--------------------
应该加锁,多线程运行程序是异步的,有可能导致上面的情况
------解决方案--------------------
弱弱的问下,为啥state不能是opened? 除了这2中状态不是还应该有很多其他状态吗, 也许我没看懂问题
http://msdn.microsoft.com/en-us/library/ms789041(v=vs.110).aspx
------解决方案--------------------
这位兄弟我还是没懂你的意思, 我理解你的意思是state不能是opened但是贴的这段代码为什么还检查她状态是否为opened呢?
else if (clt.State != CommunicationState.Opened)