コンソール C# アプリケーションから Sybase ASE データにアクセスするために Sybase.AdoNet2.AseClient を使用しています。常にではありませんが、時々、次のコードで System.NullReferenceException が発生します。
アプリケーションが 1 つだけ起動されていれば問題なく動作しますが、自分のマシンで同時に 10 個のプロセスを起動すると、この例外で失敗します。
public void Dummy()
{
List<string> valueList = new List<string>();
AseParameter[] arParms = new AseParameter[1];
arParms[0] = new AseParameter("@date", AseDbType.Date);
arParms[0].Value = Convert.ToDateTime("1/08/2010");
AseCommand spCommand = new AseCommand();
spCommand.CommandType = CommandType.StoredProcedure;
spCommand.Connection = connection;
spCommand.CommandText = "MyStoredProcedure";
spCommand.Parameters.AddRange(arParms);
AseDataReader reader = spCommand.ExecuteReader();
while (reader.Read())
{
if (reader["MyColumn"] != DBNull.Value)
valueList.Add(reader["MyColumn"].ToString());
}
}
「while (reader.Read())」の行で発生し、以下のコールスタックがあります。
System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。Sybase.Data.AseClient1.AseDataReader.Read()
で Sybase.Data.AseClient.AseDataReader.Read()
で Dummy()
誰かが私を助けてくれれば、とても感謝しています。