ThreadPool
에 QueueUserWorkItem
메서드를 사용하려고하는데 위임 메서드를 전달하려고하면 몇 가지 문제가 있습니다. 내 코드가있는 문제는 내 대리인을 설정 한 방식에 있다고 생각하지만 Google에서 검색 한 후에도이를 파악할 수는 없습니다.대리인과 함께 ThreadPool 사용?
나는 그렇게처럼 내 대리자를 만드는거야 :
public delegate void GetLatencyDelegate(Server server);
내가 서버 목록을 통해 루프를 시도하고 서버 GetLatency 방법을 실행하고 있습니다. 새 서버로 루프 할 때마다 GetLatency 메서드를 실행하기 위해 풀에서 새 스레드를 실행해야합니다. 아이디어는 이것이 프로세스를 가속화해야한다는 것입니다. 이에 대한 내 코드는 다음과 같습니다.
ThreadPool.SetMaxThreads(50, 50);
foreach (Server server in serverList)
{
GetLatencyDelegate gld = new GetLatencyDelegate(server.GetLatency);
ThreadPool.QueueUserWorkItem(new WaitCallback(gld));
}
그러나 두 개의 오류가 발생합니다. 하나 개의 존재 :
" 'GetLatencyDelegate'일치를위한 과부하가 위임하지 'System.Threading.WaitCallback'
또 다른 존재 : GetLatency '일치
'없음 과부하 ' 위임자 'Program.GetLatencyDelegate'
을 시도'ThreadPool.QueueUserWorkItem ((p) => 새로운 WaitCallback (GLD)); ' – sll
글쎄 하나는 server.GetLatency와 동일한 서명의 void GetLatencyDelegate (서버 서버) 때문입니다. 그렇지 않으면 작동하지 않을 것입니다. 2 대리자를 호출하면 스레드 풀에 인수가 전달되지 않습니다. ThreadPool.QueueUserWorkItem (새 WaitCallback (ThreadProc), 서버); – TYY
왜 작업을 사용하지 않습니까? –