![]() |
![]() |
![]() |
|
Как идентифицировать свое соединение? | ☑ | |||
---|---|---|---|---|---|
0
rasta
15.03.17
✎
14:33
|
Доброго всем дня. Помогите с вопросом.
на c# пишу процедуру для закрытия сеансов и соединений с базой. и чтобы не вырубить самого себя не могу понять как узнать номер своего соединения. в 1с можно так: IDconn = НомерСоединенияИнформационнойБазы(); а как узнать номер своего соединения когда подключение через v82COMConnector ? public static void KillUserSession(bool OnlyCurrUser = false, bool Question = true) { if (!OnlyCurrUser && Question) { string message = "Вы хотите закрыть сеансы всех ползователей, продолжить?"; string caption = "Закрытие всех сеансов"; MessageBoxButtons buttons = MessageBoxButtons.YesNo; DialogResult result; result = MessageBox.Show(message, caption, buttons, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (result == System.Windows.Forms.DialogResult.No) { return; } } dynamic v8ConnectorL = new V82.COMConnector(); int IDconn; dynamic Agent = v8ConnectorL.ConnectAgent(GlobalVars.BaseSettings.Cluster); IDconn = 0; //IDconn = НомерСоединенияИнформационнойБазы(); dynamic Clusters = Agent.GetClusters(); dynamic Processes; dynamic CurrProcess; dynamic Bases; int port; dynamic InfoBase; dynamic Sessions; dynamic Connections; dynamic InfoBaseInfo; foreach (dynamic Cluster in Clusters) { Agent.Authenticate(Cluster, null, null); Processes = Agent.GetWorkingProcesses(Cluster); foreach (dynamic Process in Processes) { port = Process.MainPort; // теперь есть адрес и порт для подключения к рабочему процессу CurrProcess = v8ConnectorL.ConnectWorkingProcess(GlobalVars.BaseSettings.Cluster + ":" + port); CurrProcess.AddAuthentication(GlobalVars.BaseSettings.User, GlobalVars.BaseSettings.Password); ///найдем нашу базу InfoBase = null; Bases = Agent.GetInfoBases(Cluster); foreach (dynamic Base in Bases) { if (Convert.ToString(Base.Name).ToUpper() == GlobalVars.BaseSettings.Base.ToUpper()) { InfoBase = Base; break; } } if (InfoBase == null) { continue; } Sessions = Agent.GetInfoBaseSessions(Cluster, InfoBase); foreach (dynamic Session in Sessions) { if (Session.ConnID = IDconn ) { continue; } if (OnlyCurrUser && (Convert.ToString(Session.UserName).ToUpper() != GlobalVars.BaseSettings.User.ToUpper())) { continue; } Agent.TerminateSession(Cluster, Session); } } InfoBaseInfo = CurrProcess.CreateInfoBaseInfo(); InfoBaseInfo.Name = GlobalVars.BaseSettings.Base; Connections = CurrProcess.GetInfoBaseConnections(InfoBaseInfo); foreach (dynamic Connection in Connections) { if (Connection.ConnID = IDconn ) { continue; } if (OnlyCurrUser && (Convert.ToString(Connection.UserName).ToUpper() != GlobalVars.BaseSettings.User.ToUpper())) { continue; } CurrProcess.Disconnect(Connection); } } } } |
||||
1
rasta
15.03.17
✎
14:40
|
if (Connection.AppID= "COMconsole")
{ continue; } не предлагать, тк кроме меня еще есть соединения с таким AppID |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |