C#调用打印机 句柄无效

禁佛爷 2019-09-18 06:47:49


用 PrintDocument 调用打印机 ,报这个错。
不是一开始打印就报错,而是打印数据量上来以后就报错。打印大于1W张左右 就回报错,重启软件就可以了。




也做了资源释放,排查很久,期待大神解答
...全文
856 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Antony_WU_SZ 2020-10-20
  • 打赏
  • 举报
回复
加个锁,或者找一找有没有busy标志位完成一个任务后才能Print(); 你的print还没执行完呢,你的foreach循环又进来下一个Print()了,我猜是这样的 while(!busy) { printDocForm.print(); }
xinyanfei 2020-10-20
  • 打赏
  • 举报
回复
请问楼主找到原因了吗?我也遇到了偶尔会报这个错
h857428238 2021-06-29
  • 举报
回复
@xinyanfei 请问大佬们最后怎么解决的,我也遇到了
禁佛爷 2019-09-24
  • 打赏
  • 举报
回复
引用 7 楼 jx315425246 的回复:
初始化时,你用了 BegainPrint 等事件,这是并发的,在一个任务未完成时,你又调用一个新的打印进程,设置打印机,就会出现这种错误
谢谢 小哥,我试试。
XBodhi. 2019-09-23
  • 打赏
  • 举报
回复
按照楼上说的看看, 获取 打印队列信息看看。
jx315425246 2019-09-23
  • 打赏
  • 举报
回复
建议加判断标志,看打印任务是否完成
jx315425246 2019-09-23
  • 打赏
  • 举报
回复
初始化时,你用了 BegainPrint 等事件,这是并发的,在一个任务未完成时,你又调用一个新的打印进程,设置打印机,就会出现这种错误
禁佛爷 2019-09-23
  • 打赏
  • 举报
回复
引用 4 楼 jx315425246 的回复:
我觉得是,你的打印作了一个单例,但是打印作业是可以并发的,在并发过程中产生的错误
小哥,解决方案是什么,我觉得他不会产生并发,就跟我们电影院取票机一样,输入一个号码,然后等出票。出票完成,在返回取票界面
禁佛爷 2019-09-23
  • 打赏
  • 举报
回复
引用 3 楼 XBodhi. 的回复:
是不是内存泄漏了 如果不行,你把那个 event 重写一些然后用 try catch 强制捕获下。
小哥,是说重新print事件吗?我也怀疑内存泄漏,但是找不见点
jx315425246 2019-09-20
  • 打赏
  • 举报
回复
我觉得是,你的打印作了一个单例,但是打印作业是可以并发的,在并发过程中产生的错误
XBodhi. 2019-09-19
  • 打赏
  • 举报
回复
是不是内存泄漏了 如果不行,你把那个 event 重写一些然后用 try catch 强制捕获下。
禁佛爷 2019-09-18
  • 打赏
  • 举报
回复
系统是win7
禁佛爷 2019-09-18
  • 打赏
  • 举报
回复
代码走到最后一张图片 printDocForm.Print(); 这句话报错。
h857428238 2021-06-29
  • 举报
回复
@禁佛爷 大佬,请问下最后你是怎么解决的,我遇到了和你一样的问题

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧