文件下载 或者 远程打印 等操作时间太长 造成SWT 无响应 处理

1 篇文章 0 订阅

操作场景:远程打印订单   因为打印耗时比较长 大约需要1分钟才能打印出来  而一个下架单里面有很多订单(1000)可能上千票。这样打印就可能需要很长时间   SWT UI界面可能就会死机无响应..

解决方法:
采用多线程异步打印.. 
遇到问题:
1.在UI界面中直接使用Display.getDefault().syncExec/asyncExec 调用打印方法 界面还是会无响应
解决方法:使用多线程 而不是UI线程  因为使用Display.getDefault().syncExec/asyncExec 
使用的还是UI主线程.


2. 使用多线程 :非UI线程操作UI界面元素 执行异常
解决方法 : 把UI元素数据获取.封装成对象传递给线程 在线程中操作数据库组成打印所需数据.处理打印。


3.在多线程中直接使用UI 元素设置值 一样会出现非UI线程操作UI界面元素 执行异常
解决方法:使用UI线程如下:
Display.getDefault().syncExec/asyncExec(new Runnable(){
@Override
public void run() {
successLabel.setText(code+""+LanguageSwitchUtil.getString("Printing.ing"));
}
});


4. 使用多线程打印完成后,需要把每个打印失败订单都返回给UI界面,下架单完成后需要返回给UI界面信息(成功完成),用于在界面上       显示
解决方法 : 把 UI控件 传递给线程  回显的时候使用
Display.getDefault().syncExec/asyncExec(new Runnable(){
@Override
public void run() {
successLabel.setText(code+""+LanguageSwitchUtil.getString("Printing.ing"));
}
});
这样界面上就有显示了.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值