RAP 事件处理程序中的线程安全
Thread safety in RAP event handlers
我有一个 RAP (2.3.1) 应用程序,用户可以在其中单击一个按钮,面板会自行更新。但是,如果用户在按钮上多次单击太快(或者 network/update 在服务器上花费的时间更长),应用程序有时会崩溃或出现 "wrong thread access" 错误,我猜这是按钮的选择由于多次点击,处理程序在多个线程上 运行。更新本身是更新 GUI 元素的串行过程(即,没有 asyncExec 或其他东西)。
我希望 RAP 序列化对用户会话的访问,但显然它没有。是否有我需要更改的设置,或者我是否必须在我的应用程序中手动同步事件处理程序(或所有事件处理程序)?
UI RAP 中的请求是同步的 (see here) 并保证在同一个 UI 线程中执行。
非法线程访问不是您通过快速单击按钮而引起的。问题一定出在选择侦听器触发的代码中。您能否 post 重现该问题的最小片段?
我有一个 RAP (2.3.1) 应用程序,用户可以在其中单击一个按钮,面板会自行更新。但是,如果用户在按钮上多次单击太快(或者 network/update 在服务器上花费的时间更长),应用程序有时会崩溃或出现 "wrong thread access" 错误,我猜这是按钮的选择由于多次点击,处理程序在多个线程上 运行。更新本身是更新 GUI 元素的串行过程(即,没有 asyncExec 或其他东西)。
我希望 RAP 序列化对用户会话的访问,但显然它没有。是否有我需要更改的设置,或者我是否必须在我的应用程序中手动同步事件处理程序(或所有事件处理程序)?
UI RAP 中的请求是同步的 (see here) 并保证在同一个 UI 线程中执行。
非法线程访问不是您通过快速单击按钮而引起的。问题一定出在选择侦听器触发的代码中。您能否 post 重现该问题的最小片段?