办公自动化和流程亲和力

时间:2012-04-02 23:38:12

标签: vb.net printing ms-word office-automation

我正在做一些Office自动化,当使用VB.NET Office引用DLL打印.doc文件时,它会导致很大的CPU负载,所以我想限制这些进程只使用一个虚拟核心。

我无法在微软的文档中找到任何关于此的内容,我想我会在这里问,因为每个人都非常乐于助人。

这是我用来打印的代码

   Dim oWordApp As Word.Application
   Dim oTargetDoc As Word.Document
   oWordApp = New Word.Application

   Select Case SQLdr("Priority")
          Case 1
                 oWordApp.WordBasic.FilePrintSetup(Printer:=printPriority1, DoNotSetAsSysDefault:=1)
          Case 2
                 oWordApp.WordBasic.FilePrintSetup(Printer:=printPriority2, DoNotSetAsSysDefault:=1)
          Case 3
                 oWordApp.WordBasic.FilePrintSetup(Printer:=printPriority3, DoNotSetAsSysDefault:=1)
          Case 4
                 oWordApp.WordBasic.FilePrintSetup(Printer:=printPriority4, DoNotSetAsSysDefault:=1)
          Case 5
                 oWordApp.WordBasic.FilePrintSetup(Printer:=printPriority5, DoNotSetAsSysDefault:=1)
   End Select

   oTargetDoc = oWordApp.Documents.Open(SQLdr("DocumentName") & ".doc")
   oWordApp.PrintOut()
   oWordApp.Documents.Close()
   oWordApp.Quit()

1 个答案:

答案 0 :(得分:1)

以下是在后台线程中运行此方法的方法:http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx

ps由于文档大小而导致您看到高CPU的最可能原因,但您也会看到高内存,因为您没有清理对象,例如:

Marshal.ReleaseComObject(app)

这篇文章是通过托管代码了解本机内存管理的最佳实践:http://jake.ginnivan.net/vsto-com-interop