Sample decorator
public text v1 · immutabledef runInUIThread(func):
def decorate(*args, **kw):
d = Deferred()
if thread.get_ident() == UI_Thread:
try:
d.callback(func(*args, **kw))
except:
d.errback()
else:
def callback():
try:
result = func(*args, **kw)
except:
f = failure.Failure()
reactor.callFromThread(d.errback, f)
else:
reactor.callFromThread(d.callback, result)
PostAsyncEvent(callback)
return d
return decorate