2009-11-24 4 views
1

일부 처리를 위해 제 3 자 어셈블리를 사용하고 있으며 일부 작업을 수행하기 위해 2 개의 하위 프로세스를 생성합니다. 저는 이것을 별도의 스레드에서 실행하고 있습니다.스레드 또는 Appdomain에 대한 자식 프로세스를 결정하십시오.

너무 오래 실행하면 처리를 취소 할 수 있기를 원합니다. 문제는 스레드를 중단하면 생성 된 프로세스가 계속 실행되고 있다는 것입니다.

특정 스레드가 어떤 프로세스를 생성했는지 판단 할 수있는 방법이 있습니까?

다른 Appdomain에서 어떤 프로세스가 생성되었는지 확인하는 방법이 있습니까?

참고

  • 나는 제 3 자 어셈블리에서 프로세스 ID를 얻는 방법이 없습니다
  • 나는이 노동자의 몇 가지를 실행합니다 나는 단순히 이름과 일치하는 모든 프로세스를 죽일 수 없어 동시에 스레드 (하나는 너무 오래 내가 해당 스레드에서 양산 프로세스 죽이고 싶어 실행하는 경우)
  • 나는 나를 그냥 이러한 프로세스를 종료하는 것이 '안전'알고를

답변

0

해결 방법을 찾았습니다. 작업자 스레드가 중단되면 생성 된 프로세스가 '고아 (orphaned)'(상위 프로세스 ID가 내 응용 프로그램보다 길지 않습니다)이므로 어떤 프로세스를 종료할지 결정할 수 있습니다.

1

타사 어셈블리가 콜백을 제공하지 않거나 프로세스를 추적 할 수 있도록 주어진 PID로 프로세스가 생성되었는지 확인하는 방법을 제공하지 않으면 프로세스가 생성 된 것을 알 수있는 방법이 없습니다 응용 프로그램의 특정 스레드 가장 가까운 것은 프로세스를 실행하는 데 사용되는 명령 행입니다.

+0

아니요, 콜백이 없습니다. 프로세스를 실행하는 데 사용되는 명령 줄을 사용할 수 있지만 해당 질문에 'notes'섹션에서와 같이 해당 이름의 모든 프로세스가 종료됩니다. 한 번에 하나의 스레드 만 프로세스를 종료하려고합니다. – Cocowalla

관련 문제