现在写个打印程序,打印按钮在Form1里面。打印方法在printer.dll模块里面,叫print()。
现在需要打印在后台进行,使用线程进行打印,有如下2个做法:
1:Form里定义一个线程,打印按钮事件里启动线程。线程里面调用printer.dll模块里面的print()函数。
2:print()函数定义一个线程,线程里面执行打印。Form的打印按钮事件直接调用printer.dll模块里面的print()。请问使用这2办法有啥区别?

解决方案 »

  1.   

    printer.dll如果可以随意改的话,没有区别
    如果不可以随意改的话谈不上你的两种做法
      

  2.   

    第一种做法,你可以跟踪打印线程的进展、暂停、终止等。
    第二种做法,你在print之前,无法知道前面是否有其他资源已经启动了print。推荐使用第一种做法,免得用户不小心按了两下打印按钮,你就开启了两个print。
      

  3.   

    两种做法区别很大
    做法一:这个打印的线程做完后你可以根据线程的参数或事件知道打印完了
    做法二:不能直接得到打印完成的消息,如果是别人使用你的类库就显得更糟糕。当然也可以换个角度变换一下,把你的print 的名字改成待异步说明的名字,然后暴露打印完成的事件,这样会好的多建议你用方法一做,会更灵活一些。