FIX: 다중 스레드 시나리오에서 XslTransform을 사용하는 경우 System.InvalidOperationException 오류

기술 자료 번역 기술 자료 번역
기술 자료: 320011 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR320011
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
모두 확대 | 모두 축소

이 페이지에서

현상

다중 스레드 간에 System.Xml.Xsl 네임스페이스의 XslTransform 개체를 공유하는 경우 응용 프로그램을 작성할 때 아래와 같은 오류 메시지가 나타날 수 있습니다.
System.InvalidOperationException: 컬렉션이 수정되었습니다. 열거 작업이 실행되지 않을 수도 있습니다.
호출 스택은 다음과 같이 나타날 수 있습니다.
at System.Collections.ArrayListEnumeratorSimple.MoveNext()
    at System.Xml.XPath.XsltFunction.SetXsltContext(XsltContext context)
    at System.Xml.XPath.CompiledXpathExpr.SetContext(XmlNamespaceManager nsManager)
    at System.Xml.Xsl.Processor.GetValueQuery(Int32 key)
    at System.Xml.Xsl.Processor.ValueOf(ActionFrame context, Int32 key)
    at System.Xml.Xsl.ValueOfAction.Execute(Processor processor, ActionFrame frame)
    at System.Xml.Xsl.ActionFrame.Execute(Processor processor)
    at System.Xml.Xsl.Processor.Execute()
    at System.Xml.Xsl.XslTransform.Transform(IXPathNavigable input,XsltArgumentList args, TextWriter output)
이 문제는 단일 프로세서 컴퓨터에서 발생할 수도 있지만 둘 이상의 프로세서가 있는 컴퓨터에서 주로 발생합니다.

원인

이 문제는 System.Xml.dll 어셈블리의 버그 때문에 발생합니다.

해결 방법

이 문제를 해결하려면 Microsoft .NET Framework용 최신 서비스 팩을 구하십시오. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
318836 INFO: 최신 .NET Framework 서비스 팩을 구하는 방법
참고: Microsoft .NET Framework와 서비스 팩 1이 이미 설치된 시스템에 이 수정 프로그램을 적용하십시오.

이 수정 프로그램의 한글 버전은 아래와 같거나 그 이상의 파일 특성을 가집니다.
   날짜          버전              크기             파일 이름
   -------------------------------------------------------------
   03-APR-2002   1.0.3705.223   1,294,336 bytes   System.Xml.dll	

해결 방법

이 문제를 해결하려면 lock 문(Microsoft Visual C# .NET) 또는 SyncLock...End SyncLock 구문(Microsoft Visual Basic .NET)을 사용하여 Transform 메서드의 사용을 보호하십시오. 그러나 이 해결 방법은 응용 프로그램 설계와 목적에 따라 허용할 수 없는 성능 손실이 발생할 수 있습니다.

더 나은 성능을 제공하는 다른 해결 방법은 N +1 XslTransform 개체의 풀 또는 캐시를 구현하는 솔루션을 만드는 것입니다. 여기서 N은 컴퓨터에 있는 프로세서 수입니다.

현재 상태

Microsoft는 본 문서의 시작 부분에 나열한 제품에서 이 문제를 확인했습니다. 이 문제는 Microsoft .NET Framework 서비스 팩 2(SP2)에서 처음 수정되었습니다.

속성

기술 자료: 320011 - 마지막 검토: 2014년 2월 10일 월요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft .NET Framework 서비스 팩 1
  • Microsoft .NET Framework Software Development Kit 1.0
키워드:?
kbnosurvey kbarchive kbbug kbfix kbnetframe100presp2fix kbnetframe100sp2fix kbnokeyword KB320011

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com