1

System.Drawing.Graphics.DrawLines(Pen pen, PointF[] points)在多线程应用程序中使用该方法,但System.Drawing.Graphics不在线程之间共享。

为什么一直在扔System.InvalidOperationException: The object is currently in use elsewhere

4

2 回答 2

2

简单的答案:不要那样做。仅在 GUI 线程上访问 GUI。

于 2009-12-16T19:36:59.130 回答
2

问题是:我对所有线程使用相同的 System.Drawing.Pen 实例。为了解决问题,我必须为每个线程克隆它。

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

为了解决这个问题,即使是锁也是必不可少的

于 2009-12-16T19:42:12.427 回答