Некоторые функции WPF не работают на другом компьютере - PullRequest
1 голос
/ 28 декабря 2011

Мы разработали настольное приложение с использованием .NetFX3.5, которое имеет некоторые winforms и два окна WPF. Я установил его почти на 20 разных компьютерах (большинство из них имеют XP), и все работают нормально, за исключением трех компьютеров (которые также имеют XP и относительно новые спецификации оборудования).

Вот ситуация:

  • WPFWindow1 содержит некоторые кнопки с событиями щелчка (которые все работают нормально) и ProgressBar, который читает из списка и генерирует несколько элементов UIE для каждого из них (для создания этих UIElemets используются оба обязательный подход и классический дочерний подход с добавлением .

  • WPFWindow2 содержит кнопку помощи с событием щелчка (которое работает нормально) и ComboBox (который только заполняет свои элементы правильно).

И проблема:

  • Когда я открываю WPFWindow1, ProgressBar не запускается, хотя и содержит нужные объекты для чтения.

  • И в WPFWindow2, когда я выбираю форму элемента ComboBox, я ожидаю, что она покажет свои отчеты ниже ComboBox, но ничего не показывает.

Я установил .NetFX4 на все целевые компьютеры. может быть, отсутствует другая сборка или обновление? или что-то не так с разрешениями (это сайт с высоким уровнем безопасности, и мы используем некоторые строгие политики с защитой конечных точек Symantec)

Любая помощь, совет, предложения, понимание или что-то еще очень ценится.


При загрузке WPFWindow2 запускается следующий таймер:

void delayTimer_Elapsed(...)
{
    delayTimer.Stop();
    Dispatcher.Invoke(new System.Windows.Forms.MethodInvoker(
        delegate{
            foreach(var data in dataList)
            {
                MyWpfControlList.Add(new MyWpfControl(data));
                progressBar.Value++;
                Application.DoEvents();
            }
        }));
}

Отредактировано: я не уверен, откуда эта проблема. Но так как он работает почти везде, я не думаю, что будет связан с кодом.

Может ли это быть обновление Windows?

Ответы [ 2 ]

0 голосов
/ 01 января 2012

Индикатор выполнения показывает фоновую задачу, это правильно?Если это так, выполняется ли фоновая задача в фоновом потоке или в потоке пользовательского интерфейса?Если пользовательский интерфейс, то вы можете обнаружить, что некоторые компьютеры (то есть компьютеры с 1 или с низким энергопотреблением) насос сообщений не может обновить индикатор выполнения, так как ваш процессор используется в основном для обновления списка.Если это так, то вам нужно выполнить фоновую задачу в потоке и периодически обновлять индикатор выполнения с помощью Dispatcher.Invoke, чтобы упорядочить обновления в потоке пользовательского интерфейса.

Пожалуйста, вы можете опубликовать пример кода, чтобы мы могли взглянуть поближе?В противном случае это просто догадки!

С уважением,

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

Вы проверили минимальное и максимальное значения на индикаторе выполнения? максимум больше минимума

...