Member 11543226 Ответов: 1

Как приостановить выполнение цикла 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" для объяснений и примеров. Это похоже на спящий режим в том смысле, что когда серверный процесс попадает в него, он приостанавливает выполнение, но позволяет другому процессу (клиентскому коду) вызвать состояние, позволяющее серверному событию затем продолжить обработку, так что это спящий режим, которым могут управлять другие потоки.

1 Ответов

Рейтинг:
1

Leo Chapiro

Как уже писал @Richard MacCutchan, попробуйте вот это:

//if(i=25) 

if(i == 25)


[no name]

Или если вы хотите, чтобы компилятор поймал ошибку:

if(25 == i)

Leo Chapiro

Правильно, лучше!

Member 11543226

это типографская ошибка, но она не решает мою проблему