나는이 유사한 작업을 수행하는 백그라운드 스레드가 있습니다.회원 수집 반복 스레드 안전
foreach
으로 알 수 있습니다. 반복 중에 UpdateServers
이 호출되면 반복기가 이전 인스턴스에 속하기 때문에 반복이 스레드로부터 안전합니다. for
루프와
은 반복으로 안전 할 수 있습니다
var serverList = client.Servers;
for (int x = 0 ; x < serverList.Count ; ++x)
{
DoSomething(serverList[ x ]);
// ...
}
그러나 컴파일러가 생성 보장 (또는 생성을 강제 할 수있는 방법이 있다면 제가 궁금하네요 것은, 만약 소비자가 다음과 같이 반복하기로 결정한 경우 위의 코드를 참조하십시오.
for (int x = 0 ; x < client.Servers.Count ; ++x)
서버 변수에 대한 액세스 권한을 부여하지 말고 대신 클로저를 받고 반복 자체를 수행하는 메소드가 있거나 서버 이름을 적절히 지정하여 호출하고 저장해야한다는 것을 분명히하는 메소드가 있어야합니다. 반복적으로 사용하는 것이 아니라 변수로 변환합니다. – entonio