Свернуть окно Word увеличивает скорость COM? - PullRequest
1 голос
/ 26 марта 2012

У меня есть код, который перебирает все таблицы в текстовом документе и считывает значения ширины в каждой ячейке. По какой-то причине я заметил, что этот код работает примерно в 5-10 раз быстрее, когда окно свернуто. Чтобы получить представление, когда я запускаю его with the window maximized, it takes ~0.02 seconds to make the Cell.Width call, но with the window minimized, it takes .001 to .0015 seconds per call.

Кто-нибудь знает, что может быть причиной этого, и если бы я мог воспроизвести эти результаты, не свернув окно. Как пользователь, было бы очень странно видеть, как ваше окно произвольно минимизируется / максимизируется для выполнения операций.

    //doc and app are the active Document and Application respectively. 
    try 
    {
        app.ScreenUpdating = false;
        //app.WindowState = word.WdWindowState.wdWindowStateMinimize; //enabling this improves speeds by 5x to 10x
        foreach (word.Table table in doc.Tables)
        {
            //loop over every cell in a table and read/store its cell.Width value.
        }
    }
    finally
    {
        //you can alternatively store the original values here and restore them to that. For simplicity, I did not do that here.
        app.ScreenUpdating = true;
        app.WindowState = word.WdWindowState.wdWindowStateMaximize; 
    }

1 Ответ

0 голосов
/ 27 марта 2012

Многие элементы управления ведут себя так: даже добавление элементов в простой ListBox происходит быстрее, если список не виден, и это определенно потому, что некоторые из них, когда элемент управления не отображается, перестают обрабатывать все сообщения, связанные с пользовательским интерфейсом ( обновление, ввод событий и т. д.).

Если сворачивание окна дает вам значительный прирост производительности (вы делаете достаточно COM-вызовов), я бы посоветовал свернуть окно, но замените его снимком изображения, чтобы пользователь не видел, чтобы окно было свернуто. , Вы также можете наложить спиннер или индикатор выполнения, чтобы пользователь знал, что что-то происходит позади.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...