-1

我正在做一些办公自动化,当使用 VB.NET Office 参考 DLL 打印 .doc 文件时,它会导致很大的 CPU 负载,因此我想将这些进程限制为仅使用单个虚拟内核。

我无法在 Microsoft 的文档中找到任何关于此的内容,我想我会在这里问,因为每个人总是那么乐于助人。

这是我用来打印的代码

   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()
4

1 回答 1

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

于 2012-04-03T04:29:41.267 回答