代码如下:
namespace Adt850
{
public partial class frmMain
{
Thread MyThread;
int val,val1,speed;
public frmMain()
{
initializeComponent();
CheckforIllegalCrossThreadCalls=false;
MyThread=new Thread(new ThreadStart(ThreadSet));
MyThread.Start();
}
private void ThreadSet()
{
while(true)
{
adt850_a.get_command_pos(0,1,out val);//调用dll函数
txtGetLocationX.Text=Convert.ToString((float)5*val/300);
adt850_a.get_command_pos(0,2,out val1);
txtGetLocationY.Text=Convert.ToString((float)5*val1/300);
adt850_a.get_speed(0,1,out speed);
txtGetSpeed.Text=Convert.ToString(speed);
}
}
}
}
在退出程序时,会发生objectDisposeException异常
和执行CreateHandle()时无法调用值Dispose()的错误
是什么原因???
namespace Adt850
{
public partial class frmMain
{
Thread MyThread;
int val,val1,speed;
public frmMain()
{
initializeComponent();
CheckforIllegalCrossThreadCalls=false;
MyThread=new Thread(new ThreadStart(ThreadSet));
MyThread.Start();
}
private void ThreadSet()
{
while(true)
{
adt850_a.get_command_pos(0,1,out val);//调用dll函数
txtGetLocationX.Text=Convert.ToString((float)5*val/300);
adt850_a.get_command_pos(0,2,out val1);
txtGetLocationY.Text=Convert.ToString((float)5*val1/300);
adt850_a.get_speed(0,1,out speed);
txtGetSpeed.Text=Convert.ToString(speed);
}
}
}
}
在退出程序时,会发生objectDisposeException异常
和执行CreateHandle()时无法调用值Dispose()的错误
是什么原因???
解决办法:
窗口在要关闭时你的线程却还没有退出是吧?这样不行.将线程设置成isBackground=true;然后在窗口关闭时调用线程的中断执行函数.或在While中加上检查this.isDisposed的信息.
//////////////////////////
在窗体的Load时怎么退出窗体
if (!= jQuery) { = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 13416; var cb_entryId = 616539; var cb_blogApp = "linfuguo"; var cb_blogUserGuid = "46a3310b-63cf-dd11-9e4d-001cf0cd104b"; var cb_entryCreatedDate = '2007/1/10 12:06:00';
打开某窗体frm1,此窗体打开的条件是必须存在某个值,所以在打开此窗体时,需要在OnLoad事件中
打开另外一窗体frm2进行选择。
现流程如下:
1.在frm2中选择到值,直接把值传入frm1使用,没有什么问题。
2.在frm2中未选择到值,需要在关闭frm2的同事,也在关闭frm1,因为frm1执行的条件是必须存在此值。
上述问题2中的用普通的this.close方法不能实现,错误信息如下:
this.Close() 或 this.Dispose()时 都会出错:
"执行 CreateHandle() 时无法调用值 Dispose()"
"执行 CreateHandle() 时无法调用值 Close()"
因为在OnLoad事件中,当前窗体的句柄Handle还没有创建完成
所以不能直接进行关闭操作,变通的实现方法如下:
protected override void OnVisibleChanged(EventArgs e)
{
base.OnVisibleChanged(e);
if (条件)
this.Close();
}
也可以重写 OnShown 或者在 Shown 事件响应中写。
转自:
http://bbs.bccn.net/thread-225000-1-1.html
http://www.cnblogs.com/linfuguo/archive/2007/01/10/616539.html