求教: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);
}
}
...全文
287 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,你确定是循环而又只打印一次? 如果是等待打印完毕,可以捕捉打印完毕事件,然后开始下一次打印,或者使用打印队列。
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。

110,566

社区成员

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

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

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