public void AddChannel(string channelLabel)
{
NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
try
{
bool successed = this.channelDicLocker.TryEnterWriteLock(CgwConst.ENTER_LOCK_WAIT_TIME);
// 申请互斥
if (successed)
{
try
{
MonitorChannel channel = new MonitorChannel(channelLabel, this.softTerminalAdapter);
if (!this.monitorChannelDic.ContainsKey(channelLabel))
{
this.monitorChannelDic.Add(channelLabel, channel);
}
logEx.Trace("Add Channel channelNo:{0}", channelLabel);
}
finally
{
// 释放互斥量
this.channelDicLocker.ExitWriteLock();
}
}
else
{
// 日志
logEx.Error("AddChannel: Enert Write Lock Failed.WaitingReadCount:{0};WaitingWriteCount:{1}.", this.channelDicLocker.WaitingReadCount, this.channelDicLocker.WaitingWriteCount);
}
}
catch (Exception ex)
{
// 日志
logEx.Error(ex, "AddChannel: Enert Write Lock Exception.");
}
}