2012-01-10 5 views
-1

감금 내가 여기에 문제가있어 ... 난 다양한 사용자 정의 응용 프로그램 도메인을 만들고이 응용 프로그램을 가지고 이상한 행동 - 응용 프로그램

, 각 응용 프로그램 도메인은 플러그인, 분리 된 조립처럼 조립 및 종속성을 실행 , 데이터베이스, 자체 리소스 등을 조작합니다.

응용 프로그램이 잠시 동안 정상적으로 실행되지만 갑자기 잠궈집니다 ... 프로세스가 멈추지 않고 그냥 멈추고 맨 위에 원격 디버거를 실행했습니다. 그것은 스레드 창에서 모든 스레드를 볼 수 있습니다, 그들은 "실행"("해빙") 상태와 함께하지만, 같은 장소에서 실행하지 ... 내가 일시 중지하고 디버그를 실행할 수 있으며 남아 있습니다 같은 장소.

코드에 잠금 장치, synlocks, 모니터가없고 appdomains를로드하는 코드가 매우 간단하고 큰 문제가 아닙니다.

내가 말했듯이, 그 작동하지만, 잠시 후에는 잠급니다 ..

이 환경에 어떤 아이디어? 벌써 나를 미치게하는 그!

필요한 코드가 있으면 알려 드리겠습니다. 감사.

+0

여기에 정보가 너무 적습니다. 응용 프로그램이 잠길 때 스레드가 수행하는 작업은 무엇입니까? 스택 트레이스와 그 주변의 일부 코드 스 니펫이 도움이 될 수 있습니다. –

+0

당신이 그것을 말할 때 데이터베이스 조작 .. 데이터베이스가 동일한 연결 문자열을 공유합니까 .. ?? 그렇다면 어쩌면 당신은 새로운 Connection 문자열을 많이 만들 것입니다. 그리고 잠시 후에 연결 풀이 가득 찼습니다. 나는 당신이 뭔가 새로운 인스턴스를 구현하고 있고 그것을 적절하게 해제하지 않는 곳을 체크 할 것입니다. 필요하다면() {}을 사용하십시오. 실제 코드를 보지 않고 그냥 제안하십시오. – MethodMan

+0

스레드는 아무 것도하지 않고 상태가 "실행 중"이지만 실제로 실행되지 않습니다. 냉동. 모든 프로세스가 데이터베이스를 조작하는 것은 아닙니다. – Brizio

답변

0

관련 데이터베이스가있는 경우 가장 확실하게 잠금이 설정됩니다. 스레드가 실행중인 SQL 문을 살펴보면 손에 교착 상태가있을 수 있습니다.

SQL Server에서 모든 교착 상태를 감지 할 수 있는지 또는 자체적으로 교착 상태를 해결하지 않도록 구성 할 수 있는지 여부는 확실하지 않습니다.

+0

하지만 가능한가? 분리 된 도메인에서 oracle 데이터베이스를 사용하는 어셈블리는 다른 모든 스레드를 잠글 수 있습니까? – Brizio

+0

위의 코멘트를 참조하십시오. – Brizio