背景:我编写了一个简单的RUMPS / PyObjC应用程序,该应用程序在各个地方发出HTTP请求并弹出系统警报对话框。大多数HTTP请求都带有线程,以避免阻塞主执行。
查询:在PyObjC中,您不应该在后台线程中创建警报对话框(只有主进程可以安全地执行此操作),因此我想知道是否存在一种明智的模式可以用来允许子线程与父线程进行通信通知它应该创建一个警报对话框。
举个例子:
popAlert()
定义了一个方法,该方法调用PyObjC函数创建警报对话框。popAlert()
。目前,我有一个子线程创建警报对话框,这在PyObjC中显然是不安全的。
我对线程/多处理还很陌生,到目前为止,我所看到的线程间通信示例似乎主要涉及子线程从类似队列的机制接收消息,而父线程可以选择阻塞直到队列为空。我还没有看到任何迹象表明父级是否有可能以我所描述的方式响应子线程的消息。
如果这样做需要重新架构,那也很好–我不喜欢任何特定的多处理方法。
任何建议将不胜感激。如果可以提供更多详细信息,请告诉我。非常感谢您的阅读。
看看pyobjc_performSelectorOnMainThread。这可能是您所需要的。这是一个人为的用法示例:
class MyClass (NSObject):
def divideByZero_(self, arg):
return arg/0
def doit(self):
try:
result = self.performSelectorOnMainThread_withObject_(
'divideByZero:', 55)
print result
except:
print "Division failed"
您可以在此PyObjC示例应用程序中找到更具体地使用它的信息。尤其要检查WSTConnectionWindowControllerClass.py。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句