У нас есть довольно сложный графический интерфейс в формах Windows с использованием C# и .Net 2.0. Моя проблема в том, что всякий раз, когда я перетаскиваю любое окно через графический интерфейс, на форме остаются артефакты. Я хоть убей не могу придумать, как это устранить. Я пробовал включить двойную буферизацию, но это только помогает, а не устраняет проблему. В других приложениях такой проблемы нет, и мне интересно, что мы делаем не так.
Обновление в ответ на ответы
Большая часть приложения просто использует набор сторонних элементов управления (Infragistics), размещенных на панели. Насколько я могу судить, в потоке графического интерфейса ничего не делается, кроме базовой (не требующей интенсивного использования процессора) обработки щелчков мышью.





Возможно, вы слишком много работаете с потоком графического интерфейса. Передача некоторой работы фоновым потокам освободит графический интерфейс для более быстрой обработки сообщений Windows.
В связи с ответом Джона Б, если ваше приложение много рисует с использованием объекта Graphics в .NET, эти методы довольно медленны по сравнению с вызовами Windows API.
Другая возможность заключается в том, что ваш графический интерфейс может не обновляться в событии OnPaint. Иногда пользовательский графический код обновляет поверхность рисования из события таймера или обновляет поверхность рисования только тогда, когда что-то меняется в том, что нужно отобразить. Код, написанный таким образом, кажется, работает большую часть времени, но вызывает описанную вами проблему, когда другое окно перемещается по вашему окну.