应该是在Bitmap操作时,没有完成,你要是用的多线程,那么最好 Thread.Sleep(1000);等一会。

解决方案 »

  1.   

    http://www.cnblogs.com/heyuquan/archive/2012/12/31/2840214.html看看这个有帮助没。
      

  2.   

    我用Thread.Sleep(1000)时,确实能不轻易出错,但这个东西吧,感觉不是绝对不出问题
      

  3.   

    我在一个线程中画Bitmap,画好了,再放到主线程的控件上,同时用了委托;另外,通过实验,我发现,我在线程中每次执行创建Graphics时,就会出错,并且出错的频率和Sleep的大小反相关。把Graphics创建放在主线程中,就不会出问题。
    我现在想知道这个Graphics和Bitmap的关系,
      

  4.   

    我在一个线程中画Bitmap,画好了,再放到主线程的控件上,同时用了委托;另外,通过实验,我发现,我在线程中每次执行创建Graphics时,就会出错,并且出错的频率和Sleep的大小反相关。把Graphics创建放在主线程中,就不会出问题。
    我现在想知道这个Graphics和Bitmap的关系,http://lnixon.blog.163.com/blog/static/51975992201101033745538/
    参考:
     Graphics对象是GDI+的关键所在。许多对象都是由Graphics类表示的,该类定义了绘制和填充图形对象的方法和属性。
     Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成,因此Bitmap是用于处理由像素数据定义的图像的对象。
      

  5.   

                gBmp = Graphics.FromImage(bmpThread);
                Random r = new Random();
                
                while (true)
                {
                     Graphics.FromImage(bmpThread);
                    Point p1 = new Point(r.Next(0, 100), r.Next(10, 200));
                    Point p2 = new Point(r.Next(10, 200), r.Next(30, 250));
                    gBmp.DrawLine(new Pen(new SolidBrush(Color.Red)), p1, p2);
                   
                    Thread.Sleep(10);
                    pictureBox1.Invoke(new MethodInvoker(delegate() {
                        pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
                        pictureBox1.Image = bmpThread;
                    }));
                }
    我这个线程方法里出错在Graphics.FromImage这里
      

  6.   

    程序员自己写测试用例,用程序调用测试用例(以随机次序、随机测试数据)跑上几千遍,自然就能让调试器中断在 bug 现场了。如果你养了一堆手工测试人员,而你的开发人员没有学习过编写测试程序的技能,那么员工再多也还是一个软件小作坊。
      

  7.   

    我在一个线程中画Bitmap,画好了,再放到主线程的控件上,同时用了委托;另外,通过实验,我发现,我在线程中每次执行创建Graphics时,就会出错,并且出错的频率和Sleep的大小反相关。把Graphics创建放在主线程中,就不会出问题。
    我现在想知道这个Graphics和Bitmap的关系,你往哪里画?控件上?所谓“跟Sleep大小反相关”其实是没有意义的。就好像原本是德国足球队,你让每一个人跑动停止之后2秒钟以后别人才能跑动,这就成了中国队了。