private void LoginThread(Object loginInfoObj)
{
NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log);
logEx.Trace("Enter: IvsVideoMonitor.LoginThread().");
try
{
IvsLoginInfo loginInfo = loginInfoObj as IvsLoginInfo;
while (!loadResult)
{
if (loginInfo == null)
{
logEx.Error("loginInfoObj is Null.");
return;
}
//等待ivs sdk事件回调结束,再调用sdk接口,否则调用失败
Thread.Sleep(1000);
logEx.Trace("Call ivsSdkClient.Login({0},{1},{2},******).", loginInfo.Ip, loginInfo.Port, loginInfo.User);
//登陆
int result = this.ivsSdkClient.Login(loginInfo.Ip, loginInfo.Port, loginInfo.User, loginInfo.Pwd);
if (result != CgwConst.IVS_SDK_SUCCESS_TAG)
{
logEx.Error("Login to ivs monitor failed.Monitor id:{0}.ip:{1}, port:{2}, user:{3}.ivs sdk error code:{4}.",
this.monitorId, loginInfo.Ip, loginInfo.Port, loginInfo.User, result);
//登陆失败,等待1分钟后再次尝试登陆
Thread.Sleep(CgwConst.RELOAD_MONITOR_WAIT_TIME);
loadResult = false;
continue;
}
else
{
logEx.Info("Login to ivs monitor success.Monitor id:{0}.ip:{1}, port:{2}, user:{3}.",
this.monitorId, loginInfo.Ip, loginInfo.Port, loginInfo.User);
loadResult = true;
}
this.GetAllCamerasTimer(null, null);
//启动定时器
this.updateCameraTimer.Start();
}
}
catch (System.Exception ex)
{
logEx.Error("Load IVS monitor failed. Exception message:{0}.", ex.Message);
}
}