Повышение производительности запуска Excel за счет исключения Activator.CreateInstance - PullRequest
0 голосов
/ 12 декабря 2011

В нашем приложении .Net запускается Excel.Есть ли способ избежать вызова Activator.CreateInstance() при запуске экземпляра Excel?new Excel.Application() вызывает его вызов.

Это код, открывающий Excel:

        public void OpenExcel(string filePath, Action beforeCloseAction, Action beforeSaveAction = null)
    {
        _excelApp = new Application
        {
            DisplayAlerts = false,
            WindowState = XlWindowState.xlMaximized,
            Visible = false,
        };

        _onBeforeSaveCall = beforeSaveAction;
        _excelApp.WorkbookBeforeSave += WorkbookBeforeSave;

        _onBeforeCloseCall = beforeCloseAction;
        _excelApp.WorkbookBeforeClose += WorkbookBeforeClose;

        _excelWorkbooks = _excelApp.Workbooks;

        SetExcelWorkbook(_excelWorkbooks.Open(filePath));

        _excelWorkbook.Saved = true;
    }

dotTrace profiling output:

1 Ответ

0 голосов
/ 12 декабря 2011

Запустили ли вы профилировщик, чтобы знать, где лежат проблемы с производительностью? Я был бы очень удивлен, если бы вызов Activator.CreateInstance был узким местом производительности в вашем приложении. Предположительно, вы будете создавать не много экземпляров Excel в секунду, а один экземпляр при запуске. Независимо от того, делается это Activator.CreateInstance или нет, не должно иметь большого значения.

...