当从excel中循还读取数据(window form)。当这读取过程未完成时,关闭窗口,导致程序抛出异常:Additional information: Exception from HRESULT: 0x800A01A8,有的时候是: RPC服务器不可用,而且调试时,VS不能自动中断,循还代码还会继续执行。
经过摸索,我把循还代码放到一个线程里执行,并把线程,excel对象提升为窗体级别,并注册Closing事件。 代码如下:
经过摸索,我把循还代码放到一个线程里执行,并把线程,excel对象提升为窗体级别,并注册Closing事件。 代码如下:
private void frmMain_Closing(object sender, CancelEventArgs e)
{
if( thread != null )
{
thread.Abort( );
thread.Join( );
}
if( this.excel != null )
{
this.excel.Dispose( );
}
}
{
if( thread != null )
{
thread.Abort( );
thread.Join( );
}
if( this.excel != null )
{
this.excel.Dispose( );
}
}
excel重新封装了。相应的方法如下。
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
if(disposing)
{
this.excel.Quit( );
}
}
{
Dispose(true);
GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
if(disposing)
{
this.excel.Quit( );
}
}
目前运行良好~