wxAssertFailure用于一段时间内的进度对话栏

时间:2016-08-25 19:17:54

标签: memory-management progress-bar wxwidgets

我正在使用wxProgressdialog来显示切换端口之间的时间和测量之间的时间。我正在运行这个测试超过24小时(在记录数据时反复重复同样的事情)。在第7小时出现的Therro是:

追踪(最近一次通话):   文件" C:\ Users \ localuser \ Desktop \ Thermal \ Cheyenne_Antenna_Cal_PDA_Thermal_Test.py",第2117行,在take_measurements_at_interval中     self.take_measurement(个体经营)   文件" C:\ Users \ localuser \ Desktop \ Thermal \ Cheyenne_Antenna_Cal_PDA_Thermal_Test.py",第2185行,在take_measurement中     self.Measure_Plot(个体经营)   在Measure_Plot中的文件" C:\ Users \ localuser \ Desktop \ Thermal \ Cheyenne_Antenna_Cal_PDA_Thermal_Test.py",第2231行     style = wx.PD_AUTO_HIDE | wx.PD_ELAPSED_TIME | wx.PD_REMAINING_TIME)   文件" C:\ Python27 \ lib \ site-packages \ wx-2.8-msw-unicode \ wx_windows.py",第2951行, init      windows .ProgressDialog_swiginit(self, windows .new_ProgressDialog(* args,** kwargs)) wx._core.PyAssertionError:C ++断言" wxAssertFailure"在wxControl :: MSWCreateControl()中的.... \ src \ msw \ control.cpp(159)失败:CreateWindowEx(" STATIC",flags = 52000100,ex = 00000000)失败

以下是用于延迟时间'

的代码
#Giving Time for switch to toggle next port
        progressMax = 5
        dialog = wx.ProgressDialog("A progress box", "Time to switch", progressMax,
                                   style=wx.PD_AUTO_HIDE | wx.PD_ELAPSED_TIME | wx.PD_REMAINING_TIME)
        keepGoing = True
        count = 0
        while keepGoing and count < progressMax:
            count = count + 1
            wx.Sleep(1)
            keepGoing = dialog.Update(count)

        dialog.Destroy()

代码暂停5秒,以便在记录数据之前允许开关硬件和PNA稳定。所有这一切都发生在&#39; For&#39;循环一段时间。如果有人需要更多信息,我将很乐意证明。

1 个答案:

答案 0 :(得分:0)

如果窗口创建在运行很长时间后失败,很可能你只是用完了Windows,这在Microsoft Windows下仍然是一个非常有限的资源(确切的限制取决于Windows版本,但可能像日志一样16384)。

如果您在这段时间内从未返回主事件循环,可能会发生这种情况,因为顶级窗口只有在您返回后才会被真正销毁(而不仅仅是隐藏)。