2012-08-01 1 views
0

나는 C# VS11 베타에 응용 프로그램이 있습니다.스레드 던지는 개체를 찾을 수 있지만 개체가 분명히 있습니다

아래 코드는 디버그 정보 테이블 null 아니라고 도시 NullReferenceException (주석 라인)

private void ParralelProcessor(Int32 threadNum) 
{ 
    HashSet<Feature> Features = new HashSet<Feature>(); 
    HashSet<FeatureType> FeatureTypes = new HashSet<FeatureType>(); 
    DataTable TopographicFeatures = new DataTable(); 
    DataTable TopographicFeatureObjects = new DataTable(); 
    DataTable CartographicText = new DataTable(); 
    DataTable CartographicSymbol = new DataTable(); 
    List<DataRow> FeaturesAsRows = new List<DataRow>(); 
    List<DataRow> FeatureObjectsAsRows = new List<DataRow>(); 
    List<DataRow> CartographicTextAsRows = new List<DataRow>(); 
    List<DataRow> CartographicSymbolAsRows = new List<DataRow>(); 
    Thread.Sleep(100); 
    TopographicFeatures.Columns.Add("fid", typeof(System.Int64)); 
    TopographicFeatures.Columns.Add("FeatureId", typeof(System.Int16)); 
    TopographicFeatureObjects.Columns.Add("fid", typeof(System.Int64)); 
//BELOW 
    TopographicFeatureObjects.Columns.Add("GeoCoordinates", typeof(SqlGeometry)); //THIS LINE 
//ABOVE 
    TopographicFeatureObjects.Columns.Add("TypeId", typeof(System.Int16)); 
    CartographicText.Columns.Add("fid", typeof(System.Int64)); 
    CartographicText.Columns.Add("textString", typeof(System.String)); 
    CartographicText.Columns.Add("anchorPosition", typeof(System.Int16)); 
    CartographicText.Columns.Add("font", typeof(System.Int16)); 
    CartographicText.Columns.Add("height", typeof(System.Decimal)); 
    CartographicText.Columns.Add("orientation", typeof(System.Decimal)); 
    CartographicSymbol.Columns.Add("fid", typeof(System.Int64)); 
    CartographicSymbol.Columns.Add("orientation", typeof(System.Decimal)); 

던져 둘 열 컬렉션 없다.

그것은 모든 객체가 선언되어있어서, 따라서 각 스레드가 자신의 인스턴스를 가지고 배치되어

Parallel.For(1, ThreadsPerFile + 1, X => { ParralelProcessor(X); }); 

아래와 같이 Parralel.For 루프에서 호출되는 내부 메소드를 실행한다.

저는 왜 이것이 예외를 던지고 있는지에 대해 다소 혼란 스럽습니다.

+0

전체 오류 텍스트와 호출 스택을 포함 할 수 있습니까? –

+0

일반적인 for-loop에서 작동합니까? – Oliver

답변

0

줄을 주석 처리 할 때 코드가 제대로 실행됩니까? 문제가 해당 줄에 없거나 SqlGeometry가 문제를 일으키는 것 같습니다.

0

나는 열 이런 종류의 많은 경험이없는,하지만 어쩌면이 조금 도움이 될 것입니다 : SqlGeometry 이후

는 .NET의 기본 유형 중 하나가 아닌를, 당신이에서이 인용을 준수해야합니다 Microsoft :

는 데이터 바이트 [], 이러한 열이 사용자 정의 형식으로 취급 될 베이스 .NET 프레임 워크 데이터 유형 및 이외의 종류에 따라 같은 열을 정의 할 수 있지만

다음 사용법은 입니다. 사용자 정의 형식에 대한 자세한 내용은 사용자 정의 형식 만들기 및 사용을 참조하십시오.

열을 RowFilter 또는 Select 식의 일부로 사용할 수 없습니다.

열이 PrimaryKey로 사용되거나 Sort 또는 DataView로 사용되는 경우 불변 필드로 처리해야합니다. 표에 추가 된 열 데이터는 변경된 이 아니어야합니다.

해당 ColumnMapping은 MappingType.Element로만 설정할 수 있습니다.

열의 데이터 형식을 구현하는 클래스는 SerializableAttribute로 표시된 이어야하며 필요한 경우 ISerializable 또는 IXmlSerializable 인터페이스를 구현해야합니다.

변경 내용 추적을 지원합니다. 어느 을 SetModified 호출하여 DataTable을 클래스의 변경 내용 추적 메커니즘 중 하나 IChangeTracking 인터페이스를 구현하거나, DataRow를 열 값이 수정 된 알리는에 대한 책임을 수행해야 열의 데이터 형식을 구현하는 클래스를 이용하려면 행 값 오브젝트를 개별적으로 인스턴스 화 된 컬럼 값 오브젝트에 지정함으로써.

행운을 빌어 요!

관련 문제