0

.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プロファイリング出力:

4

1 に答える 1

0

プロファイラーを実行して、パフォーマンスの問題がどこにあるかを把握しましたか?Activator.CreateInstanceの呼び出しが、アプリケーションのパフォーマンスのボトルネックであった場合、私は非常に驚きます。おそらく、1秒間に多くのExcelインスタンスを作成するのではなく、起動時に1つのインスタンスを作成することになります。これがActivator.CreateInstanceによって行われるかどうかは、ほとんど違いがないはずです。

于 2011-12-11T20:55:42.990 に答える