this great project을 사용하려고하지만 많은 이미지를 스캔해야하므로 프로세스가 많은 시간을 필요로하므로 멀티 스레딩을 고려하고있었습니다.
그러나 이미지의 실제 처리를하는 클래스는 Static methods
을 사용하고 에 의해 ref
을 조작하고 있으므로 올바르게 처리하는 방법을 잘 모르겠습니다. 내 메인 스레드에서 호출 방법은 : 대부분의 내가 그것을 디버깅 시간을 보냈어요C에서 스레드에서 정적 메서드 호출 #
List<string> filePaths = new List<string>();
Parallel.For(0, filePaths.Count, a =>
{
ArrayList al = new ArrayList();
BarcodeImaging.ScanPage(ref al, ...);
});
과 :이 기능을 다음과 같이 사용을 사용하는 것이 안전 경우
public static void ScanPage(ref System.Collections.ArrayList CodesRead, Bitmap bmp, int numscans, ScanDirection direction, BarcodeType types)
{
//added only the signature, actual class has over 1000 rows
//inside this function there are calls to other
//static functions that makes some image processing
}
내 질문은 내가 얻은 결과는 정확했지만 지금은 재현 할 수없는 몇 가지 오류가 발생했습니다.
편집
는 여기에 클래스의 코드를 붙여 : 당신이 정적 클래스 (이 지역 변수 또는 필드에 값을 저장 알고하지 않는 말하는 방법이있다 http://pastebin.com/UeE6qBHx
메소드 자체를 분석하지 않고도 아무 것도 스레드 안전하지는 않은지 여부를 알 수 있습니다! – Yahia
"위대한 프로젝트"가 아직도 쓸데없는'ArrayList' 클래스를 사용하고 있다는 사실 때문에 스레드의 안전성에 신경 쓰고 있습니다. –
전역 변수 (또는 매개 변수로 사용되지 않거나 함수 내에서 사용되지 않는 변수)를 사용하는 경우에는 no입니다. –