문제

동일한 스레드에서 wxPostEvent/wxCallAfter를 사용하여 여러 이벤트가 게시되는 경우버튼 클릭 시 동일한 순서로 처리되어야 합니까?

아래 예에서 wx.Callafter는 이벤트를 게시하는 데 사용되며, 이는 결국 콜백 함수를 호출합니다. 이벤트는 wx.CallAfter에 전달된 것과 동일한 순서로 호출됩니다.

def onbutton(self, event):
    wx.CallAfter(func1)
    # some more code
    wx.CallAfter(func2)
도움이 되었습니까?

해결책

CallAfter는 이벤트를 이벤트 큐에 게시하며 순서대로 처리되어야 합니다.그러나 함수 완료가 아닌 유휴 이벤트 시 처리되므로 유휴 이벤트의 타이밍에 따라 func1이 완료되기 전에 func2 to가 처리될 수 있습니다(예:wx.Yield 등) 이에 대한 문제에 대한 논의가 있습니다. 여기, 그리고 그것은 일종의 까다로울 수 있는 것 같습니다.

다른 팁

나는 그것이 보장되어야한다고 믿는다. 스레드에서 직렬 포트에서 데이터를 가져 오는 코드가 있고 WX가 처리 할 이벤트를 시작합니다. 115kbps에서 데이터를 수신 할 때에도 의심 할 여지없이 여러 이벤트가 처리되기 전에 해고 될 때도 WX가 내 핸들러를 호출하여 데이터를 인쇄/로그인 할 때 데이터가 나타납니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top