簡體   English   中英

使用System.Drawing.Graphics時如何防止InvalidOperationException?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM