using (OleDbCommand cmd = new OleDbCommand(cmdText, WFConn))
{
int val = 0;
AddParameterToODBComm(cmd, Type);
AddParameterToODBComm(cmd, Year);
try
{
WFConn.Open();
OleDbDataReader reader = cmd.ExecuteReader();
reader.Read();
val = (int)reader[0];
}
catch (Exception ex) { MessageBox.Show(ex.Message); return 0; }
finally { WFConn.Close(); }
return (int)(val * ((int)numCount.Value * 0.01)); //Throws an InvalidComObjectException, but still works.
}
此代码块完全按照我的意愿工作(返回记录集大小的 %),但每次运行时,我都会在最后一行进入调试器,但有COM object that has been separated from its underlying RCW cannot be used
例外。
之前,return (int) etc etc 都在 try 块中,并且异常发生在 finally 块中的 Connection.Close() 上。
我在两个地方发生了同样的问题。问题是,如果我继续这个程序,一切都会完全按照预期进行。我已经在 SO 上检查了与此异常有关的其他问题,但它们指的是手动处置/释放 COM 对象,我在这里不打算这样做。
这里发生了什么,我只是没有看到?它肯定与关闭连接有关 - 我可以让它保持打开状态,但我遇到了一个问题,即期望它打开而它没有打开。