У меня есть следующий код (упрощенный):
IEnumerable MyFunc(...){
IAsyncResult res = mSocket.BeginReceive(mReceptionArray, 0, pNbBytes, SocketFlags.None, null, null);
while (!res.IsCompleted){
yield return new WaitForFixedUpdate();
}
}
Который можно использовать следующим образом:
foreach(object o in MyFunc());
Конечно, компилятор жалуется, потому что o
является никогда не использовался. Есть ли способ обойти это?
РЕДАКТИРОВАТЬ
Foreach выполняется в сопрограмме. Мне нужно заблокировать выполнение сопрограммы до тех пор, пока я не получу данные с сервера. Я мог бы использовать обычный Receive () , но это заблокировало бы все другие сопрограммы, а я не могу этого сделать: есть много других работающих сопрограмм, и блокирование этой с помощью Receive или EndReceive заблокировало бы их.
В любом случае, это не ] a busy-wait.
Любые предложения по рефакторингу кода более чем приветствуются, я не очень разбираюсь в C #.