public void Close()
 {
     if (Connection != null)
     {
         StopConnectionTimeoutThread();
         Marshal.FinalReleaseComObject(Connection);
         Connection = null;
         GC.Collect();
     }
 }
        public OperationResult<bool> Connect()
        {
            IsConnected = false;
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    StartConnectionTimeoutThread();

                    string loginError = null;

					var result = GetConnection(GlobalSettingsHelper.GlobalSettings.FS_RemoteAddress, GlobalSettingsHelper.GlobalSettings.FS_Port, GlobalSettingsHelper.GlobalSettings.FS_Login, GlobalSettingsHelper.GlobalSettings.FS_Password);
                    if (result.HasError &&
                        result.Error == "Пользователь или пароль неверны. Повторите ввод" ||
                        result.Error == "Удаленный доступ с этого компьютера запрещен")
                    {
                        loginError = result.Error;
                    }
                    Connection = result.Result;

                    if (loginError != null)
                    {
                        return new OperationResult<bool>("Неверный логин драйвера Firesec: " + loginError);
                    }
                    StopConnectionTimeoutThread();
                    if (Connection != null)
                        break;
                }
                if (Connection != null)
                    break;
                SocketServerHelper.Restart();
            }
            if (Connection == null)
            {
                LoadingErrorManager.Add("Ошибка при загрузке драйвера firesec");
                return new OperationResult<bool>("Ошибка при загрузке драйвера firesec");
            }

            IsConnected = true;
            SetLastEvent();
            return new OperationResult<bool>() { Result = true };
        }