2013-08-28 4 views
1

.NET 어셈블리에 정의 된 이벤트를 구독하는 .Net (2.7) 스크립트 용 Python이 있습니다. 이벤트가 발생하고 python 기반 이벤트 핸들러가 호출되면 파이썬의 메인 스레드 나 작업자 스레드에서 핸들러가 실행됩니까?Python for .NET 이벤트 처리기가 작업자 스레드에서 실행됩니까?

... 
def MyEventHandler(source, args): 
    print 'Received message: ' + args.Message 
... 
dotNetObject.SomeEvent += MyEventHandler 
... 

나는 그것이 작업자 스레드 수 있어야합니다 생각하지만 핸들러에 코드 줄을 넣을 때

{8920 :

print threading._active 

은 단지 주 스레드를보고 : < _MainThread 나는 w를 어떻게 알 수>}

(MainThread는 8920 시작) 모자 스레드 파이썬의 주어진 라인에서 실행 중입니까?

업데이트 : 좋아요, threading.current_thread()가 있습니다. 내 핸들러의 외부는 반환

< _MainThread 내 처리기 내부는

< _DummyThread (더미-1을 반환하면서,>

(MainThread을, 7064을 시작) 데몬 7916을 시작)>

그래서 "DummyThread"작업자 스레드가 있습니까? 왜 스레딩에 나타나지 않았습니까?

감사합니다.

답변

1

DummyThreads 작업자 스레드이며,이 호출에 표시 :

threading.enumerate() 

그래서, 그래, 이벤트 핸들러는 작업자 스레드에서 실행됩니다.

관련 문제