У меня есть приложение vb.net, которое открывает документ Word 2016 один за другим и использует для него приведенный ниже код.
Public oWA As Microsoft.Office.Interop.Word.Application
Public oDoc As Microsoft.Office.Interop.Word.Document
oWA = New Microsoft.Office.Interop.Word.Application
--below code line opens multiple word document one by one
oDoc = oWA.Documents.Open(fileName, objMissing, objMissing, objMissing,
objMissing, objMissing, objMissing, objMissing, objMissing, objMissing,
objMissing, objMissing, objMissing, objMissing, objMissing, objMissing)
Проблема иногда в том, что приложение зависает и перестает обрабатывать текстовые файлы. Затем я увидел два экземпляра Winword.exe в диспетчере задач -> Процесс. Когда я убиваю того, у кого меньше памяти, приложение запускается автоматически. Как создаются эти два экземпляра. Могу я это предотвратить? Для решения этой проблемы я создал функцию для уничтожения экземпляра winword.exe, но она не работает.
Private Function KillMultipleWord()
Dim currentProcess As Process()
currentProcess = System.Diagnostics.Process.GetProcessesByName("winword")
If currentProcess.Length > 1 Then
Dim totalBytesOfMemoryUsed As Long = 0
Dim cmptotalBytesOfMemoryUsed As Long = 0
Dim cmpProc As System.Diagnostics.Process = Nothing
For Each proc As System.Diagnostics.Process In currentProcess
totalBytesOfMemoryUsed = proc.WorkingSet64
If cmptotalBytesOfMemoryUsed < totalBytesOfMemoryUsed Then
If cmpProc IsNot Nothing Then
cmpProc.Kill()
End If
cmpProc = proc
cmptotalBytesOfMemoryUsed = totalBytesOfMemoryUsed
Else
proc.Kill()
End If
Next
cmpProc = Nothing
End If
KillMultipleWord = Nothing
End Function





Вам нужно использовать
oDoc.Close()
после каждого документа, и
oWA.Quit()
когда вы закончите.
Вам необходимо предоставить минимальный воспроизводимый пример. Опубликованный вами фрагмент кода не содержит функции «зацикливания», поэтому мы не можем точно определить, в чем проблема. Однако, скорее всего, вы вызываете
New Word.Applicationна каждой итерации цикла. Вы должны вызвать его только один раз, перед циклом и циклом открытия документов - все в одном экземпляре Word.Application. Когда вы закончите работу с документом, обязательно закройте его и отпусти это. Когда вы закончите с Word.Application, не забудьте также выпустить его правильно. В противном случае ваш код никогда не будет работать правильно.