Как приостановить выполнение цикла for до тех пор, пока клиент не ответит?
Я пишу серверную программу , в которой я хочу приостановить выполнение цикла for, когда счетчик(int) равен 25 в то время, когда сервер задает вопрос клиенту "вы хотите продолжить отправку данных?", если ответ клиента "да", то мой цикл for должен возобновиться со счетчика 26. теперь моя программа, когда она остановлена в цикле for, если используется "thread.sleep ()", она не попадает в состояние, когда ответ клиента находится в цикле for, поэтому метод "sleep" здесь не работает.
Есть ли какой-либо возможный способ добиться этого в c#. (VS10)?
Что я уже пробовал:
Case "$" : for(int i = 1 ; i <= 50 ; i++) { // put code here to stop for loop if (i=25) nd client responces then resume from 26. if (code[i] != "0") { InputSimulator.SimulateTextEntry(code[i]); } if(i=25) { //Thread.Sleep(#sec); // here time is depending on client response. } }
Richard MacCutchan
Это неправильный способ сделать это. Вы должны просто отправить сообщение клиенту, а затем использовать команду receive, чтобы дождаться ответа. Также ваш if
тест неправильный, вам нужно ==
.
F-ES Sitecore
Вам нужно использовать то, что называется reset events, google "c# manualresetevent" для объяснений и примеров. Это похоже на спящий режим в том смысле, что когда серверный процесс попадает в него, он приостанавливает выполнение, но позволяет другому процессу (клиентскому коду) вызвать состояние, позволяющее серверному событию затем продолжить обработку, так что это спящий режим, которым могут управлять другие потоки.