Cross Theaded Calls - Многие элементы управления тяжелым графическим интерфейсом приложения после .net 1.1 2.0 - лучший способ? - PullRequest
0 голосов
/ 18 марта 2010

Я недавно обновил решение .net1.1 до .net2.0. Как это очень тяжелая прикладная программа GUI с множеством элементов управления и многими многопоточными операциями, которые обновляют GUI. Несмотря на то, что эти операции работали без проблем в .net1.1, после обновления запускаются перекрестные незаконные операции. Учитывая тот факт, что существует множество сеток, кнопок и меток состояния, которые необходимо обновить с помощью этих многопоточных операций, я решил написать код для проверки решения InvokeRequired, однако сделать это для каждого элемента управления, вероятно, не будет лучшим способом решения этой проблемы Это.

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

Пожалуйста, дайте мне знать, если мой вопрос неясен.

Заранее спасибо

1 Ответ

1 голос
/ 21 мая 2010

Вот хорошая статья о вашей проблеме:

http://www.perceler.com/articles1.php?art=crossthreads1

Быстрый и грязный взлом состоит в том, чтобы полностью отключить проверку:

static class Extensions {
   public static DisableCrossThreadCheck(this Control c){
    c.CheckForIllegalCrossThreadedCalls = false;
    foreach(var ctl in c.Controls) { 
      ctl.DisableCrossThreadCheck();
    }
   }
}

(in your form): 
this.DisableCrossThreadCheck();
...