使用 System.Drawing.Graphics 时如何防止 InvalidOperationException?
我在多线程应用程序中使用 System.Drawing.Graphics.DrawLines(Pen pen, PointF[] points)
方法,但 System.Drawing.Graphics
不是线程之间共享。
为什么它不断抛出System.InvalidOperationException:该对象当前正在其他地方使用
?
I am using the System.Drawing.Graphics.DrawLines(Pen pen, PointF[] points)
method in a multithreaded application, but the System.Drawing.Graphics
isn't shared between threads.
Why it keeps throwing the System.InvalidOperationException: The object is currently in use elsewhere
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
简单的回答:不要这样做。仅在 GUI 线程上访问 GUI。
Simple answer: don't do that. Only access the GUI on the GUI thread.
问题是:我对所有线程使用相同的 System.Drawing.Pen 实例。为了解决这个问题,我必须为每个线程克隆它。
为了解决这个问题连锁都是必不可少的
The problem was: I was using the same System.Drawing.Pen instance for all threads. I had to clone it for every thread in order to solve the problem.
Even the lock is essential in order to solve this problem