У меня довольно общий вопрос с циклом C# while.C# во время использования цикла
Этот код должен продолжать выполняться только после того, как сеанс RDP действительно отключен.
Когда свойство Connected изменено на 0, это означает, что соединение сеанса RDP действительно завершено. Когда свойство равно 1, оно все еще подключено и соединение еще не завершено.
Кто-нибудь видит что-то внутренне плохое в отношении этого кода? Есть ли лучший способ сделать это?
private void Reconnect()
{
rdp1.Disconnect(); // force the RDP session to disconnect
while (rdp1.Connected == 1) // true as long as RDP is still connected
{
// do nothing
}
rdp1.Connect(); // execute this code after while loop is broken
}
/****************************************** ********************/
Вот последний код, который я использовал для ответа Джеймса. Счетчик достаточен в качестве таймаута для моей цели.
int i = 0;
rdp1.Disconnect();
while (rdp1.Connected == 1)
{
if (i == 1000 * 10) break;
else Thread.Sleep(100);
i++;
}
rdp1.Connect();
Есть ли вообще что-либо, что может привести к булеву тесту на провал? Возможно, сервер занят и никогда не обходит выполнение функции разъединения, или команда теряется где-то в повреждении данных ... Пользователям может понадобиться способ вырваться из него. ИДК. –
Да, я думаю, что это мое беспокойство, что если объект rdp1 по какой-то причине потерпел неудачу, а изменение состояния не было обнаружено, пользователю понадобился бы какой-то перерыв. Может быть, просто тайм-аут или попытка/уловка могут работать. –
Ответ Джеймса имеет хорошую информацию; Я все еще думаю, что вам нужен способ, чтобы пользователь сказал, что что-то случилось, вызвало меня. –