是 Timer 事件导致 PowerBuilder 应用程序崩溃吗?

Is it Timer event crashing PowerBuilder app?

使用时导致 PowerBuilder 应用程序崩溃的计时器事件。应用程序以随机​​时间间隔崩溃。有时不超过一分钟就会崩溃,有时即使随机点击鼠标、编辑更改和项目更改也不会崩溃。

我想不出有什么测试可以检查崩溃的原因。我不知道把 TRY CATCH 放在哪里,因为代码非常非常简单。令人怀疑的是,我打开的 window 实例在其打开事件中设置了计时器,仅当同时打开 2 个实例时,应用程序才会崩溃。

定时器触发自定义事件,自定义事件有一行数据窗口的Retrieve函数调用。

数据检索事件的可疑之处window 是 Messagebox 只显示一条消息说 'data has been refreshed'。

1- 打开事件将计时器设置为 10 秒

2- 定时器事件调用 dw_1.Retrieve()

3- RetrieveEnd 事件显示 MessageBox

实际上是定时器事件还是其他原因导致了崩溃?

首先,the basics

在你的描述中触发我的一件事是消息框。 MessageBox() 将阻止消息队列的处理,而 Timer 功能将继续将多个 Timer 事件加载到队列中。如果我离开我的电脑 10 分钟,我无法想象要让这个列表快速连续刷新 60 次并且所有 Timer 事件都在排队。此外,根据 PB 何时开始处理更多消息(我模糊地记得消息是在 Retrieve() 期间处理的),您可能同时对同一事件进行多个处理,甚至更糟的是,多个在同一个 DataWindow 上同时检索。

如果是我,我会:

  1. 以 non-modal 方式显示我的消息(例如 window 上的一段静态文本)。
  2. 通过在定时器功能开始时关闭定时器并在结束时重新打开它来防止多个同时发生的定时器事件。
  3. 使用标志阻止多个同时发生的计时器事件,根据我希望如何处理 window 的多个实例,实例或共享。

祝你好运。