C# 从第二个线程绘制到位图

标签 c# multithreading picturebox

我正在尝试绘制到 public static Bitmap,它是我的 PictureBox-Control 的图像。绘图在同一个线程中工作正常,但是当我启动第二个线程时没有任何反应,没有绘制任何内容。有谁知道解决方案?

绘制代码:

Graphics g = Graphics.FromImage(screen);  
g.Clear(Color.Black);Brushes.White);  
g.Dispose();

//编辑:
请原谅我。位图存储在另一个名为 Form1 的类中。线程类是 DrawHelper。为了访问位图,我用这个(从 Form1 调用)为 DrawHelper 提供了 Form1 的引用。
我希望这有帮助。我可以发布所有代码,但是会有很多不必要的代码。

最佳答案

您的位图绑定(bind)到窗体窗口消息循环。如果您尝试访问类似的内容,则必须使用 Invoke 或 BeginInvoke。

此处:http://msdn.microsoft.com/en-us/library/ms171728.aspx

编辑。阅读评论后,我可以告诉您,您有一个错误,位图只是没有得到您认为它得到的信息。与使用线程本身无关...

如果你真的需要解决它,你应该创建一个简单的原型(prototype),有 2 个线程,一个按钮和一个位图,然后尝试从线程 #2 中绘制任何东西,看看什么不起作用。如果连这都行不通 - 请在此处发布代码。 (请不要复制/粘贴整个应用程序 - 保持在一个点上)

另外你应该把 try/catch 放在 using 里面。位图的行为可能只是因为在使用中存在不可见的异常。

关于C# 从第二个线程绘制到位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11122588/

相关文章:

c# - 如何更快地处理 C# 中的 MouseMove 事件

c# - 单击图片框的不同部分 (c#)

c# - Xamarin.Android 在后台线程上使用异步方法会导致屏幕闪烁

c# - 在 C# 中将列表列表作为类使用

Java UncaughtExceptionHandler 使用 JNI 没有任何异常

java - 对单个进程集体使用多个线程

c# - 从列表框文件名打开图像 C# winform

c# - 将长字符串二进制转换为十六进制 C#

c# - 如何在 F# 中返回实现 IAsyncActionFilter 的任务?

Ruby 一次只创建 3 个线程