C#中,通常涉及到打印,我们一般都会用到PrintDocument类,用该类来实现打印真是又方便又强大.程序员可以非常轻松的控制打印内容.然而PrintDocument类提供了打印"取消"功能,却没有为我们提供打印的"暂停"与"继续".这对与想在打印过程中实现对打印任务的控制的初学者来说,制造了不少麻烦.
其实,实现打印任务的"暂停"与"继续".我们可以借助于API函数"SetJob"来实现.这个函数可以对一个打印作业的状态进行控制,它在VB中的声明如下:
Declare Function SetJob Lib "winspool.drv" Alias "SetJobA" (ByVal hPrinter As Long, ByVal JobId As Long, ByVal Level As Long, pJob As Byte, ByVal Command As Long) As Long
返回值及相关参数说明请参考有关资料,这本不想过多的阐述.因为本文想着重讲的是在C#中如何简单有效的控制打印任务.
由打印任务的暂停与继续我们可能很自然的想到了C#中线程的暂停与继续.而如果把打印任务运行在某个线程上,然后控制该线程的暂停与继续,不就可以实现对打印任务的控制了吗?
想到这里,那我们就动手测试一下吧: