このエラーを解決するのに助けが必要です。
これがエラーです{"The type initializer for 'System.Transactions.Diagnostics.DiagnosticTrace' threw an exception."}
私はAccessデータベースを使用しており、ビルド構成のプラットフォームは任意のCPUです。
コードが正常に実行される場合もあれば、突然この例外がスローされる場合もあります。ここで同様の質問がたくさんありますが、どれも私のエラーを解決していません。
これは私の接続文字列です
DbPath = @"d:\Ek.mdb";
ConnectionString =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DbPath+";User Id=admin;Password=;";
これは、エラーが発生している接続を開くための機能ですCon.Open()
public bool OpenConnection()
{
if (Con == null)
{
Con = new OleDbConnection(ConnectionString);
}
else if ((Con.State == ConnectionState.Broken || Con.State == ConnectionState.Closed) && (Con.State!=ConnectionState.Open))
{
Con.Open();
Tx = Con.BeginTransaction(IsolationLevel.ReadCommitted);
return true;
}
else if (IsConnectionBusy())
{
throw new DataException("Connection Busy");
}
return false;
}
これは、クエリを実行した後に接続を閉じる方法です
public Boolean CloseConnection()
{
if(IsConnectionBusy())
throw new DataException("Connection Busy");
if (Con.State==ConnectionState.Open)
{
Tx.Commit();
Con.Close();
return true;
}
return false;
}
public bool IsConnectionBusy()
{
switch (Con.State)
{
case ConnectionState.Connecting:
case ConnectionState.Executing:
case ConnectionState.Fetching:
return true;
}
return false;
}
なぜそれが時々完全に実行され、時々この例外がスローされるのかわかりません。
どんな助けでも大歓迎です。このエラーを解決するためにあまりにも多くのことを試みましたが、できませんでした。
私が気づいたのはこの行です。
else if ((Con.State == ConnectionState.Broken || Con.State == ConnectionState.Closed) && (Con.State!=ConnectionState.Open))
接続は にありclosed state
ます。Con.Open()
ステートメントを実行しているときにConnection
状態が変化しOpen
、その後このエラーがスローされます。
また、デバッグ中にエラーは発生しません。その場所に a を置かない場合にのみ発生しbreakpoint
ます。
ブレークポイントを置いて、Con.Open()
そこで初めて数秒間停止すると、エラーはスローされません。その後、ブレークポイントを無効にしてもエラーがスローされない場合...!!!