Я пишу C#
VSTO
Excel
Addin.В моем проекте требуется обновить и объединить большое количество ячеек.
Чтобы уменьшить мерцание и улучшить производительность, я устанавливаю для Application.ScreenUpdating значение false
и возвращаюсь кtrue
после завершения операции.
Проблема в том, что иногда я возвращаю настройку исключения в состояние true
.
Сообщение об ошибке:
(HRESULT: 0x800AC472) (VBA_E_IGNORE).
В этом случае Excel зависает (поскольку обновление экрана отсутствует), и единственный выход - закрыть / снова открыть Excel.
Вот мой код:
Excel.Application app = somevalue;
try
{
app.ScreenUpdating = false;
return true;
}
catch (Exception e)
{
e.LogExceptionError($"SafeEnableScreenUpdating -> param={enable}");
}
... some large operation.
try
{
app.ScreenUpdating = true;
return true;
}
catch (Exception e)
{
// exception is here.
e.LogExceptionError($"SafeEnableScreenUpdating");
}
Единственное возможное решение, которое я нашел до сих пор, - это сделать цикл и попытаться восстановить состояние несколько раз.Кто-нибудь сталкивался с такой проблемой?