首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >爱普生PosPrinter (TM-T70)在连接尝试时不断创建线程

爱普生PosPrinter (TM-T70)在连接尝试时不断创建线程
EN

Stack Overflow用户
提问于 2015-03-04 15:37:02
回答 1查看 105关注 0票数 0

我正在尝试使用爱普生TM-T70 Pos打印机。打印工作正常,但如果打印机脱机,我会尝试重新连接。

在我遇到一个异常之前,以下情况会在打印机控制对象的构造函数中发生:

代码语言:javascript
复制
private POSPrinterControl19 epsonPrinterControl19;
epsonPrinterControl19 = (POSPrinterControl19) new POSPrinter();
epsonPrinterControl19.open(printerName);
epsonPrinterControl19.claim(0);  

在声明中,JPos异常被抛出,构造函数不构造。在对象上,调用finalize-method:

代码语言:javascript
复制
    super.finalize();
    epsonPrinterControl19.removeStatusUpdateListener(this);
    epsonPrinterControl19 = null;  

不过,仍在运行的是一个线程:

代码语言:javascript
复制
"EPSON UPOS Service EventThread.@2472" prio=5 tid=0x14 nid=NA waiting
java.lang.Thread.State: WAITING
  at java.lang.Object.wait(Object.java:-1)
  at java.lang.Object.wait(Object.java:485)
  at jp.co.epson.upos.ServiceEventQueue.peekEvent(Unknown Source:-1)
  at jp.co.epson.upos.ServiceEventThread.run(Unknown Source:-1)

我似乎无法摆脱这个线程。由于我重新尝试从主程序连接到打印机,因此不断创建新的线程。

问题是:我如何摆脱这些线程?

编辑:我尝试了更多...这个问题似乎是由创建这个线程的新POSPrinter();引起的。

就我个人而言,我现在有另一个问题...我需要考虑这个问题是否仍然相关。

EN

回答 1

Stack Overflow用户

发布于 2015-03-04 21:44:10

如果有人知道如何删除线程(而不是阻止它们),请回答:)。

对于实际问题:结果是,通过调用new POSPrinter(),创建了一个线程,并且无论PosPrinter对象是否被引用,它都保持活动(尽管正在等待)。

目前的解决方案似乎是确保构造函数只被调用一次,并在该对象上执行重新连接、断开连接等所有操作。

(无论如何,对我来说,这似乎是更干净的编程。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28848890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档