/// <summary> /// Реализует точку входа потока синхронизации с сервером /// </summary> private void ServerThreadFunction() { Session: // Сессия коммуникации с сервером lock (started) // получаем монопольный доступ к флагу запуска { C_S_Exchange ce = null; try { ce = new C_S_Exchange(server.ip, server.port); // создаем подключение к серверу ce.Register(IdClient, Config.Port); // регистрируем сеанс на сервере ce.GetMessage(); // ждем от сервера подтверждение ce.GetClients(IdMaterial); // посылаем запрос выдать клиентов по материалу ce.GetMessage(); // ждем подтверждение ce.UpdateInfo(IdMaterial, Stat_Upload_, Stat_Download_); // отправляем статистику ce.GetMessage(); Stat_Download += Stat_Download_; Stat_Upload += Stat_Upload_; Stat_Upload_ = 0; Stat_Download_ = 0; // обнуляем статистику ce.EndTrasaction(); // завершам сессию общения с сервером ce.GetMessage(); // ожидаем подтверждение } catch (Exception) { goto Session; } started = "yes"; // флаг запуска выставляем Thread.Sleep(Config.UpdateTimeout); // отлаживаем поток на заданное значение таймаута обновления } goto Session; // когда прошел интервал, запускаем новую транзакцию }
/// <summary> /// Реализует точку входа потока синхронизации с сервером /// </summary> private void ServerThreadFunction() { Session: // Сессия коммуникации с сервером lock (started) // получаем монопольный доступ к флагу запуска { C_S_Exchange ce = null; try { ce = new C_S_Exchange(server.ip, server.port); // создаем подключение к серверу ce.Register(IdClient, Config.Port); // регистрируем сеанс на сервере ce.GetMessage(); // ждем от сервера подтверждение ce.GetClients(IdMaterial); // посылаем запрос выдать клиентов по материалу ce.GetMessage(); // ждем подтверждение ce.UpdateInfo(IdMaterial, Stat_Upload_, Stat_Download_); // отправляем статистику ce.GetMessage(); Stat_Download += Stat_Download_; Stat_Upload += Stat_Upload_; Stat_Upload_ = 0; Stat_Download_ = 0; // обнуляем статистику ce.EndTrasaction(); // завершам сессию общения с сервером ce.GetMessage(); // ожидаем подтверждение } catch (Exception) { goto Session; } started = "yes";// флаг запуска выставляем Thread.Sleep(Config.UpdateTimeout); // отлаживаем поток на заданное значение таймаута обновления } goto Session; // когда прошел интервал, запускаем новую транзакцию }