2 u010002418 u010002418 于 2015.07.13 11:15 提问

C# 回车触发一个打印函数,会卡死,如果打印前sleep(3000)就正常。求指教 。

C# 界面 回车触发一个打印函数,会卡死,如果在打印的函数里,在打印局部方法执行前thread.sleep(3000)就正常。 一定大于等于3秒,2秒也会卡死。但这样打印会很慢,怎样解决。谢谢大家指教下。

5个回答

jamejoe
jamejoe   2015.07.13 11:17
已采纳

新开一个线程可以不?触发函数里控制线程就行,把打印函数放在线程里

oyljerry
oyljerry   Ds   Rxr 2015.07.13 11:21

打印本身是一个耗时的过程,你应该开线程,把耗时操作放到线程中,这样就不会阻塞主线程,界面就不会卡死了。

oyljerry
oyljerry 回复花心码农: 对,在主界面开线程
2 年多之前 回复
u010002418
u010002418 哥,我是新手,我写了一个打印的解决方案,在主界面导入。。你说的开线程,是在主界面开吗?
2 年多之前 回复
D675401212
D675401212   2015.07.13 13:27

1.使用线程和委托来执行这个耗时的操作,开一条新的线程来执行打印的方法,这个方法判断当前是否主线程调用,
是的话就使用委托来执行这个打印的方法。
2.使用异步编程来处理,通过回调函数来通知执行结果,期间可以新开线程做些界面响应(进度条什么的)或者一直阻塞到打印完成为止。
3.使用C#控件BackgroundWork发起后台操作调用。

u012401478
u012401478   2015.07.13 15:47

使用线程和委托来执行这个耗时的操作,开一条新的线程来执行打印的方法,这个方法判断当前是否主线程调用,
是的话就使用委托来执行这个打印的方法。

miracle_yao
miracle_yao   2015.07.28 13:49

为了不锁死UI,造成界面卡顿,应该将打印的操作额外开一个线程操作。

Csdn user default icon
上传中...
上传图片
插入图片