求教:winform自动打印的优化

璀璨LT 2016-08-16 09:30:13
现在的方法是在窗体的线程上执行委托,但自动打印一段时间后程序直接卡死,请大家帮忙看下问题出在哪,或者怎么优化:
///在拥有此控件的基础窗口句柄的线程上执行指定的委托。
private void PointDelegate()
{
this.Invoke(new PointInvokeDelegate(AutoPoint));
}
private void AutoPoint()
{
var loResult = moDao.GetNeedPointStu(); //获取待打印的学生名单
foreach(var stu in loResult)
{
//执行打印
PrintReport(stu.IDCARDNO, DateTime.Now.ToString("yyyy-MM-dd"));
Thread.Sleep(10000);
return;
}
}
private void PrintReport(string vsIDCardNo, string vsTestDate)
{
this.PrintDocAssign.PrintController = new StandardPrintController();
msIDCardNo = vsIDCardNo;
msTestDate = vsTestDate;

this.PrintDocAssign.PrintPage += PrintDocAssign_PrintPage;
foreach (System.Drawing.Printing.PaperSize ps in PrintDocAssign.PrinterSettings.PaperSizes)
{
if (ps.PaperName == "A4")
{
PrintDocAssign.PrinterSettings.DefaultPageSettings.PaperSize = ps;
PrintDocAssign.DefaultPageSettings.PaperSize = ps;
}
}
mbIfAutoPrint = true;
this.PrintDocAssign.Print(); //开始打印进程
moDao.SetPointZT(msIDCardNo, msTestDate);
}
}
...全文
306 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
董事长Kevin 2018-01-05
  • 打赏
  • 举报
回复
领导说了加个Thread.Sleep(10000) ,让用户花钱来优化。
璀璨LT 2016-08-16
  • 打赏
  • 举报
回复
引用 3 楼 D56233577 的回复:
你在UI线程上执行Thread.Sleep(10000)?你还来问为什么卡?
额,之前连续发送打印指令会把打印机卡死,用户不会也懒的学怎么处理,有没有什么更好的办法?
D56233577 2016-08-16
  • 打赏
  • 举报
回复
你在UI线程上执行Thread.Sleep(10000)?你还来问为什么卡?
璀璨LT 2016-08-16
  • 打赏
  • 举报
回复
引用 1 楼 zhi_ai_yaya 的回复:
private void AutoPoint() { var loResult = moDao.GetNeedPointStu(); //获取待打印的学生名单 foreach(var stu in loResult) { //执行打印 PrintReport(stu.IDCARDNO, DateTime.Now.ToString("yyyy-MM-dd")); Thread.Sleep(10000); return; } } 这个foreach、睡眠10秒和return,你确定是循环而又只打印一次? 如果是等待打印完毕,可以捕捉打印完毕事件,然后开始下一次打印,或者使用打印队列。
return确实错了,再试着按你的建议优化下,谢谢了~
我叫小菜菜 2016-08-16
  • 打赏
  • 举报
回复
private void AutoPoint() { var loResult = moDao.GetNeedPointStu(); //获取待打印的学生名单 foreach(var stu in loResult) { //执行打印 PrintReport(stu.IDCARDNO, DateTime.Now.ToString("yyyy-MM-dd")); Thread.Sleep(10000); return; } } 这个foreach、睡眠10秒和return,你确定是循环而又只打印一次? 如果是等待打印完毕,可以捕捉打印完毕事件,然后开始下一次打印,或者使用打印队列。
本实践项目深入研究了基于C#编程环境与Halcon图像处理工具包的条码检测技术实现。该原型系统具备静态图像解析与动态视频分析双重功能,通过具体案例展示了人工智能技术在自动化数据采集领域的集成方案。 C#作为微软研发的面向对象编程语言,在Windows生态系统中占据重要地位。其语法体系清晰规范,配合.NET框架提供的完备类库支持,能够有效构建各类企业级应用解决方案。在计算机视觉技术体系中,条码识别作为关键分支,通过机器自动解析商品编码信息,为仓储管理、物流追踪等业务场景提供技术支持。 Halcon工具包集成了工业级图像处理算法,其条码识别模块支持EAN-13、Code128、QR码等多种国际标准格式。通过合理配置检测算子参数,可在C#环境中实现高精度条码定位与解码功能。项目同时引入AForge.NET开源框架的视频处理组件,其中Video.DirectShow模块实现了对摄像设备的直接访问控制。 系统架构包含以下核心模块: 1. Halcon接口封装层:完成图像处理功能的跨平台调用 2. 视频采集模块:基于AForge框架实现实时视频流获取 3. 静态图像分析单元:处理预存图像文件的条码识别 4. 动态视频解析单元:实现实时视频流的连续帧分析 5. 主控程序:协调各模块工作流程 系统运行时可选择图像文件输入或实时视频采集两种工作模式。识别过程中将自动标注检测区域,并输出解码后的标准条码数据。该技术方案为零售业自动化管理、智能仓储系统等应用场景提供了可靠的技术实现路径,对拓展计算机视觉技术的实际应用具有重要参考价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
Java内存泄漏发现技术研究.pdf内容概要:本文围绕Java内存泄漏的发现技术展开研究,针对现有研究多集中于泄漏发生后的诊断与修复,而缺乏对泄漏现象早期发现方法的不足,提出了一套结合动态与静态分析的综合解决方案。动态方面,设计了一种面向泄漏的单元测试生成方法,通过识别高风险泄漏模块并生成具有泄漏检测能力的单元测试,实现早期泄漏发现;静态方面,提出基于模式的检测方法,重点识别因错误使用WeakHashMap等弱引用结构导致的内存泄漏,通过静态扫描源代码提前发现潜在缺陷。系统基于JUnit、CodePro Analytix和Soot等工具实现,实验验证了其在JDK等开源项目中发现已知泄漏缺陷的能力。; 适合人群:具备一定Java编程基础,从事软件开发、测试或质量保障工作1-3年的研发人员,以及对程序分析、内存管理感兴趣的研究生或技术人员。; 使用场景及目标:①帮助开发者在编码和测试阶段主动发现潜在内存泄漏,提升软件健壮性;②为构建自动化内存泄漏检测工具链提供理论与实践参考;③深入理解Java内存泄漏的常见模式(如WeakHashMap误用)及对应的动态测试生成与静态分析技术。; 阅读建议:建议结合Soot、JUnit等工具的实际操作进行学习,重点关注第三章和第四章提出的三类泄漏模块识别算法与基于模式的静态检测流程,并通过复现实验加深对溢出分析、指向分析等底层技术的理解。

111,118

社区成员

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

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

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