Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何保持python ctypes运行时调用的函数_Python_Multithreading_Callback_Ctypes_Sparkle - Fatal编程技术网

如何保持python ctypes运行时调用的函数

如何保持python ctypes运行时调用的函数,python,multithreading,callback,ctypes,sparkle,Python,Multithreading,Callback,Ctypes,Sparkle,我正在尝试创建一个使用ctypes调用winsparkle C库的最小python脚本。只有当我逐行运行代码时,代码才会起作用,win\u sparkle\u check\u update\u without\u ui()弹出一个窗口按预期下载更新。但是在正常运行脚本时,这个函数会立即被调用和跳过,它不会保持打开状态,除非我添加hacky time.sleep选项 运行此函数并在用户关闭弹出窗口之前保持其打开状态的正确python方式是什么 from ctypes import CDLL imp

我正在尝试创建一个使用ctypes调用winsparkle C库的最小python脚本。只有当我逐行运行代码时,代码才会起作用,
win\u sparkle\u check\u update\u without\u ui()
弹出一个窗口按预期下载更新。但是在正常运行脚本时,这个函数会立即被调用和跳过,它不会保持打开状态,除非我添加hacky time.sleep选项

运行此函数并在用户关闭弹出窗口之前保持其打开状态的正确python方式是什么

from ctypes import CDLL
import logging, time

class UpdateAgent(object):

    def __init__(self, appcast_url):

        self.appcast_url = appcast_url

    def check_for_update(self):

        winsparkle = CDLL("WinSparkle.dll")

        url = self.appcast_url

        winsparkle.win_sparkle_set_appcast_url(url.encode('ascii', 'ignore'))

        winsparkle.win_sparkle_set_app_details(
                                unicode('Company'),
                                unicode('myapp'),
                                unicode(9))

        winsparkle.win_sparkle_init()

        winsparkle.win_sparkle_check_update_without_ui()

        #time.sleep(10)

    def run(self):
        try:
            self.check_for_update()
        except Exception as e:
            logging.info('%s' % (e))

没有解决办法?遇到同样的问题…我的解决方案是滚动我自己的代码。下载更新并运行它。要使winsparkle保持打开状态,您需要一个父用户界面来将其附加到该解决方案?遇到同样的问题…我的解决方案是滚动我自己的代码。下载更新并运行它。要使winsparkle保持打开状态,您需要将其附加到父UI