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

2024-06-10 01:18

本文主要是介绍文件下载 或者 远程打印 等操作时间太长 造成SWT 无响应 处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

操作场景:远程打印订单   因为打印耗时比较长 大约需要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"));
}
});
这样界面上就有显示了.


这篇关于文件下载 或者 远程打印 等操作时间太长 造成SWT 无响应 处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1046834

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

2. 下载rknn-toolkit2项目

官网链接: https://github.com/airockchip/rknn-toolkit2 安装好git:[[1. Git的安装]] 下载项目: git clone https://github.com/airockchip/rknn-toolkit2.git 或者直接去github下载压缩文件,解压即可。

Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

我们需要引入包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>sp

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06

动手学深度学习【数据操作+数据预处理】

import osos.makedirs(os.path.join('.', 'data'), exist_ok=True)data_file = os.path.join('.', 'data', 'house_tiny.csv')with open(data_file, 'w') as f:f.write('NumRooms,Alley,Price\n') # 列名f.write('NA