1

Я использую метод System.Drawing.Graphics.DrawLines(Pen pen, PointF[] points) в многопоточном приложении, но System.Drawing.Graphics не разделяется между потоками.Как предотвратить InvalidOperationException при использовании System.Drawing.Graphics?

Почему он продолжает бросать System.InvalidOperationException: The object is currently in use elsewhere?

ответ

2

Проблема была: я использовал тот же экземпляр System.Drawing.Pen для всех потоков. Я должен был клонировать его для каждого потока, чтобы решить проблему.

var pens = new Pen[0]; 
lock (this._pens) 
{ 
    pens = (Pen[])this._pens.Select(a => (Pen) a.Clone()).ToArray(); 
} 

Даже замок имеет важное значение для того, чтобы решить эту проблему

2

Простой ответ: не делайте этого. Только доступ к графическому интерфейсу в потоке графического интерфейса.

+0

Это может произойти в проекте GUI. Пожалуйста, сохраните свой ответ, чтобы другие пользователи могли воспользоваться им. –

Смежные вопросы