스레드 수를 사용하여 코어 수와 동일한 스레드를 생성하는 다중 스레드를 사용하여 일부 데이터를 처리하려고합니다 (.NET 2.0에서 3.5로 제한되어 있으므로 TPL을 사용할 수 없음).스레드 풀에서 진행률 표시 줄 업데이트 C#
내 모든 스레드가 내 데이터의 다른 부분에서 작동하는 동일한 기능을 실행합니다.
내 문제는 스레드 풀의 스레드에서 진행률 표시 줄을 업데이트 할 수 없습니다. 호출 및 백그라운드 작업자와 같은 솔루션을 찾았지만 사용 방법을 실제로 이해할 수 없어이를 사용하는 방법을 알려주십시오. 속도가 크로스 스레드 호출이 최소한의 시간을 차지하면 이렇게 아주 도움이 될 것입니다 나에게 가장 중요하다
private static float[] inpdat=new float[1000];//The input array to process
//The spawned threads
public void dowork(object o)
{
int np = (int)o;
for(int i=np;i<inpdat.length;i=i+Environment.ProcessorCount)
{
//do some processing
if(np==0)
{
//update progress bar here
}
}
}
//The main thread
for (int npou = 0; npou < numproc; npou++)
{
resetEvents[npou] = new ManualResetEvent(false);
ThreadPool.QueueUserWorkItem(new WaitCallback(dowork), npou);
PetrelLogger.InfoOutputWindow("manual reset event set");
}
처럼
내 코드 보인다. 감사합니다.
"스레드 수를 사용하여 코어 수와 동일한 스레드 생성"- 스레드 수를 명시 적으로 omptimise해야하는 경우는 거의 없습니다. 쓰레드 풀은 이것을 위해 설계되었습니다. –