[英]How to prevent InvalidOperationException when using System.Drawing.Graphics?
我在多線程應用程序中使用System.Drawing.Graphics.DrawLines(Pen pen, PointF[] points)
方法,但線程之間不共享System.Drawing.Graphics
。
為什么它一直拋出System.InvalidOperationException: The object is currently in use elsewhere
?
簡單回答:不要這樣做。 僅訪問GUI線程上的GUI。
問題是:我對所有線程使用相同的System.Drawing.Pen實例。 我必須為每個線程克隆它以解決問題。
var pens = new Pen[0];
lock (this._pens)
{
pens = (Pen[])this._pens.Select(a => (Pen) a.Clone()).ToArray();
}
即使鎖定也是必不可少的,以解決這個問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.