public SmcErr Unload()
{
NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
logEx.Info("Enter: VideoMonitorManage.Unload().");
SmcErr err = new CgwError();
if (this.monitorsOperateLock.TryEnterWriteLock(CgwConst.ENTER_LOCK_WAIT_TIME))
{
try
{
foreach (KeyValuePair<string, IVideoMonitor> monitor in monitorsDictionary)
{
IVideoMonitor videoMonitor = monitor.Value;
SmcErr result = videoMonitor.Unload();
if (!result.IsSuccess())
{
logEx.Error("Unload monitor failed.Monitor id:{0} ,Error code:{1}", monitor.Key, result.ErrNo);
//一个失败,记录失败,继续其他平台卸载
err.SetErrorNo(result.ErrNo);
continue;
}
}
monitorsDictionary.Clear();
}
catch (Exception e)
{
logEx.Error("Unload monitor failed..Execption message:{0}", e.Message);
}
finally
{
this.monitorsOperateLock.ExitWriteLock();
}
}
return err;
}