在以下方法中,我收到警告:
警告:CA2000:Microsoft.Reliability:在方法中 'AvdfileCache.AddPartTableGaugeData(long,long)',调用 System.IDisposable.Dispose在对象'cmdGaugeData'之前 对它的引用超出了范围。
private long AddPartTableGaugeData(long lDBIdAvdFile, long lValue)
{
long lDBIdInserted = -1;
using (SQLiteCommand cmdGaugeData = new SQLiteCommand(_connection))
{
cmdGaugeData.CommandText = GetKnownSql(enuKnownSqlStatementKeys.AVDJOURN_GAUGEDATA_INSERT);
cmdGaugeData.Parameters.AddWithValue(null, lDBIdAvdFile);
cmdGaugeData.Parameters.AddWithValue(null, lValue);
cmdGaugeData.ExecuteNonQuery();
lDBIdInserted = _connection.LastInsertRowId;
}
return lDBIdInserted;
}
我认为因为使用了Statement,所以保证cmdGaugeData
在所有情况下都被处理掉了,为什么我仍然会收到这个警告?
编辑: 到现在为止,我认为这是分析仪中的一个错误。我不得不承认上面的代码是我真实代码的一个剥离变体(实际上我在我的实际代码中有更多参数),并且在试图找出警告何时出现时,我来到下面:
private long AddPartTableGaugeData(long lDBIdAvdFile, AVDPart part)
{
long lDBIdInserted = -1;
using (SQLiteCommand cmdGaugeData = new SQLiteCommand(_connection))
{
cmdGaugeData.CommandText = GetKnownSql(enuKnownSqlStatementKeys.AVDJOURN_GAUGEDATA_INSERT);
cmdGaugeData.Parameters.AddWithValue(null, "SVal_1".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_2".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_3".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_4".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_5".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_6".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_7".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_8".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_9".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_10".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_11".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_12".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_13".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_14".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_15".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_16".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_17".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_18".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_19".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_20".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_21".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_22".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_23".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_24".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_25".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_26".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_27".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_28".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_29".ToString());
cmdGaugeData.Parameters.AddWithValue(null, "SVal_30".ToString());
cmdGaugeData.ExecuteNonQuery();
}
lDBIdInserted = _connection.LastInsertRowId;
return lDBIdInserted;
}
此代码再次发出警告,但是:
ToString
- 来电时(只是传递SVal_xx
作为参数)ToString
时,带有ToString
的第30个参数会生成警告那么还有什么进一步的暗示吗?