#excel #vb.net #temporary-files
Вопрос:
У меня есть программа, которая открывает некоторые файлы Excel для проверки значений, а затем закрывает их. Исходные файлы находятся в сети. Все в порядке, я могу считывать значения, но со временем у меня возникли некоторые проблемы с производительностью, на то, чтобы открыть их и прочитать значения, ушло в несколько раз больше 10 секунд. Я вижу, что он создал много временных файлов без каких-либо данных (0Ko). Когда я удаляю все временные файлы, время возвращается меньше чем на секунду.
Вот исходный код :
Private Shared Sub Verification(listLots As List(Of String) )
Dim AppliExcel As Microsoft.Office.Interop.Excel.Application = New Microsoft.Office.Interop.Excel.Application()
For Each numLot As String In listLots
Dim nomFichier As String = GetCheminFichier(numLot)
If System.IO.File.Exists(nomFichier) Then
Dim Classeur As Workbook = Nothing
Dim Feuille As Worksheet
'free all existing workbook
For Each wb As Workbook In AppliExcel.Workbooks
wb.Close(SaveChanges:=False)
ReleaseExcelObject(wb)
Next
'Open excel file
Classeur = AppliExcel.Workbooks.Open(nomFichier,, True)
......
Classeur.Close(False)
ReleaseExcelObject(Classeur)
Classeur = Nothing
end if
Next
AppliExcel.Quit()
ReleaseExcelObject(AppliExcel)
End Sub
Private Shared Sub ReleaseExcelObject(obj As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
obj = Nothing
Catch ex As Exception
obj = Nothing
Finally
GC.Collect()
End Try
End Sub
Мне интересно, в чем проблема и как ее решить.
Надеюсь, у кого-нибудь есть идея. С уважением, NC.
Ответ №1:
Это ошибка, а не функция, поэтому нет единственно правильного решения.
Отключите все антивирусные программы. Если это работает, исключите папку из AV, исключите тип файла из AV.
если это не сработает:
Измените расположение временных файлов excel.
Попробуйте использовать другую версию Windows как для Клиента, так и для Сервера.
Отключите автоматическое сохранение и автоматическое восстановление.
Отключить Удаленное Дифференциальное Сжатие
Есть куча других вещей, которые могут вызвать подобные проблемы — настройки синхронизации, настройки конфиденциальности (отчетности), настройки обновления проводника Windows, настройки обновления миниатюр … начните с AV и посмотрите, что вы получите.
Комментарии:
1. Спасибо тебе за твой ответ, Дэвид. Вы не знаете, идентифицирован ли он корпорацией Майкрософт ?
2. «Это» невозможно идентифицировать, потому что » Это » всегда что-то другое. Или, в качестве альтернативы, он был идентифицирован много раз-по крайней мере, один раз для каждой из возможностей, о которых я упоминал. По мере того, как вы пробуете каждую возможность, вы можете изменить свой вопрос, чтобы исключить это и включить информацию о вашей среде.