Автоматизация делопроизводства и управление процессами - PullRequest
0 голосов
/ 03 апреля 2012

Я занимаюсь автоматизацией Office, и при печати файла .doc с использованием справочных библиотек VB.NET Office это приводит к большой загрузке ЦП, поэтому я хочу ограничить эти процессы только одним виртуальным ядром.

Мне не удалось найти что-либо в документации 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()

1 Ответ

1 голос
/ 03 апреля 2012

Вот как вы можете запустить этот метод в фоновом потоке: http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx

ps наиболее вероятная причина, по которой вы видите высокую загрузку ЦП, из-за размера документа, но вы также увидите большой объем памяти, потому чтоВы не очищаете свои объекты, например:

Marshal.ReleaseComObject(app)

Вот статья, чтобы понять лучшие практики, когда дело доходит до нативного управления памятью через управляемый код: http://jake.ginnivan.net/vsto-com-interop

...