GDI + не является ни реентерабельным, ни многопоточным (что за слово).Вы, вероятно, получаете (ваша секретная ошибка), потому что два разных потока конкурируют за ресурсы GDI +.
Из System.Timers.Timer
документации:
Серверный таймер предназначен для использования срабочие потоки в многопоточной среде.Таймеры сервера могут перемещаться между потоками, чтобы обрабатывать возникшее событие Elapsed, что приводит к большей точности, чем таймеры Windows, для своевременного вызова события.
Используйте Forms.Timer
для сериализации захвата в очередь сообщений в формевы получите гораздо больше шансов не сломать его.Вы можете получить то, что вы хотите - но - использовать PNG вместо JPG.Это будет более эффективно для «нормальных» форм.
Multithreading
+
GDI+
=
big NO NO
.
Кроме того, вы не получите свои изображения на регулярной основеинтервал - но вам не нужно беспокоиться об этом, так как любое ожидаемое изменение должно произойти и из цикла сообщений - так что вы не пропустите ни секунды.