文件下载 或者 远程打印 等操作时间太长 造成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

相关文章

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤