2012-05-05 6 views
0

私は単純なコードを持っています。このループは、1から9までの9つの値をカウントします。すべてが、1,3または9のクライアントに適しています。しかし、他の数のクライアントの場合、i_wierszに値9があり、foreachループが別のクライアントサーバーに何かを送信したい場合は、何人のクライアントと仕事をするのですか?foreachループを中断する(WCFサーバー/クライアント)

私は、foreachループの内側に入れてみてください:

if(i_wiersz == 9) 
    break; 

が、取得エラー:エラー

Control cannot leave the body of an anonymous method or lambda expression

マイコード:

bool spr_wiersz(int wiersz, int kolumna) //chck_roow(int roow, int column) 
{ 
    wys_tab(); 
    int i_wiersz = 0; 
    bool[] result = new bool[9]; 

    while (i_wiersz < 9) 
    { 
     subscribers.ForEach(delegate(ImessageCallback callback) 
     { 
      if (((ICommunicationObject)callback).State == CommunicationState.Opened) 
      { 
       result[i_wiersz] = callback.spr_wiersz(wiersz, kolumna, i_wiersz); 
       i_wiersz++; 
      } 
     }); 

     for (int j = 0; j < i_wiersz; j++) 
     { 
      if (result[j] == false) 
      { 
      return false; 
      } 
     } 
    } 

    return true; 
} 
+0

これはの正確な複製である[_How匿名デリゲートを使用しているとき、私はリストに .ForEachループを終了しますか?_](http://stackoverflow.com/questions/557159/how-do-i- exit-a-liststring-foreach-loop-when-an-anonymous-delegateを使用している場合)。 –

答えて

1

はあなたが単純にそれを変換できません。伝統的なものforeach

foreach (IMessageCallback callback in subscribers) 
    { 
     if (((ICommunicationObject)callback).State == CommunicationState.Opened) 
     { 
      result[i_wiersz] = callback.spr_wiersz(wiersz, kolumna, i_wiersz); 
      i_wiersz++; 

      if (i_wiersz == 9) 
       break; 
     } 
    }