程序运行时,窗口无法响应任何操作 GDI+绘图窗口假死线程 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主,把m_bitmap变量的定义和赋值的语句发来看下 OpenFileDialog file = new OpenFileDialog(); file.Filter = "Bitmap文件(*.bmp)|*.bmp|JPEG文件(*.jpg)|*.jpg|PNG(*.png)|*.png|所有文件(*.bmp/*.jpg/*.png)|*.bmp/*.jpg/*.png"; file.FilterIndex = 3; file.RestoreDirectory = true; if (file.ShowDialog() == DialogResult.OK) { m_bitmap = (Bitmap)Bitmap.FromFile(file.FileName, false); this.AutoScroll = true; this.AutoScrollMinSize = new Size(m_bitmap.Width, m_bitmap.Height); this.Invalidate(); }这个就是了 m_bitmap = (Bitmap)Bitmap.FromFile(file.FileName, false); 改成Image img = Bitmap.FromFile(file.FileName, false);m_bitmap = new Bitmap(img);至少在我本地的vs2010里运行正常,楼主可以试下 顺便说下,那个while循环需要放到新线程里去执行 while (stop)这理造成了 你还是要开一个线程来做要不然会卡死UI线程 { bru.RotateTransform(2); g.FillRectangle(bru, 0, 0, m_bitmap.Width, m_bitmap.Height); System.Threading.Thread.Sleep(100); } 异常是因为你没用委托。要调用控件就要用委托我使用了委托,为什么窗口还是会卡死?你这么写不是另开线程呀。汗。。你要开Thread 然后放到线程里去跑 我使用了委托,为什么窗口还是会卡死?你这么写不是另开线程呀。汗。。你要开Thread 然后放到线程里去跑一开就报异常,不开就卡死 要用Bitmap的构造函数创建Bitmap对象的,不要直接用FromFile方法 异步调用和线程都能解决你的问题。以下是另开线程的方法。Thread RotatingThread = new Thread(new ThreadStart(delegate { ss(); }));RotatingThread.Start(); 要用Bitmap的构造函数创建Bitmap对象的,不要直接用FromFile方法。谢谢了,我的问题解决了。是用了两个中间变量传递Width 和Height 参数的,然后在按钮事件里另开线程来调用。貌似没有用到委托。关于四楼的代码,我刚刚把代码又改回昨天的状态,居然没有报异常,不知道编译器抽的什么风,所以,我就没有用到四楼的代码了……不过不管怎样,问题还是解决了,而且多了几种解决问题的思路,还是多谢各位的帮助了! [求助]如何用C#的System.Threading类实现并行问题呢? [玻璃鱼V]重叠的PictureBox控件透明问题 一个小问题<<的用法 一个关于WM_ACTIVATE的问题,请大家一定要指教 关于文本着色的问题 请大家讨论 c#中的usercontrol这样用? 怎样用string获取datatime格式的数据啊 c#父窗体和子窗体关闭问题 关于dataset,请思归等高手讨论一下如何充分利用他来提供性能。~~~~~~~~~~~~~ 登陆数据库出错 一打开工程VS2010就崩溃,怎么回事?? OleDb读取Access,“未指定的错误”异常
OpenFileDialog file = new OpenFileDialog();
file.Filter = "Bitmap文件(*.bmp)|*.bmp|JPEG文件(*.jpg)|*.jpg|PNG(*.png)|*.png|所有文件(*.bmp/*.jpg/*.png)|*.bmp/*.jpg/*.png";
file.FilterIndex = 3;
file.RestoreDirectory = true;
if (file.ShowDialog() == DialogResult.OK)
{
m_bitmap = (Bitmap)Bitmap.FromFile(file.FileName, false);
this.AutoScroll = true;
this.AutoScrollMinSize = new Size(m_bitmap.Width, m_bitmap.Height);
this.Invalidate();
}
这个就是了
改成
Image img = Bitmap.FromFile(file.FileName, false);
m_bitmap = new Bitmap(img);
至少在我本地的vs2010里运行正常,楼主可以试下
{
bru.RotateTransform(2);
g.FillRectangle(bru, 0, 0, m_bitmap.Width, m_bitmap.Height);
System.Threading.Thread.Sleep(100);
}
异常是因为你没用委托。要调用控件就要用委托
我使用了委托,为什么窗口还是会卡死?
你这么写不是另开线程呀。汗。。你要开Thread 然后放到线程里去跑
我使用了委托,为什么窗口还是会卡死?你这么写不是另开线程呀。汗。。你要开Thread 然后放到线程里去跑一开就报异常,不开就卡死
要用Bitmap的构造函数创建Bitmap对象的,不要直接用FromFile方法
以下是另开线程的方法。Thread RotatingThread = new Thread(new ThreadStart(delegate
{
ss();
}));
RotatingThread.Start();
要用Bitmap的构造函数创建Bitmap对象的,不要直接用FromFile方法
。
谢谢了,我的问题解决了。是用了两个中间变量传递Width 和Height 参数的,然后在按钮事件里另开线程来调用。貌似没有用到委托。
关于四楼的代码,我刚刚把代码又改回昨天的状态,居然没有报异常,不知道编译器抽的什么风,所以,我就没有用到四楼的代码了……不过不管怎样,问题还是解决了,而且多了几种解决问题的思路,还是多谢各位的帮助了!