我正在做一些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()
答案 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