Visual Studio または \bin\release ディレクトリ内の実行可能ファイルで WinForms c# アプリを実行すると、データ テーブルに参照 (設定) しているフィールドが含まれていないという奇妙なエラー メッセージが表示されます。
フィールドが存在することはわかっていますが、データテーブル オブジェクトを複数回使用するプロセスを実行したときにのみエラー メッセージが表示されます。
(実行可能ファイルで) [続行] をクリックすると、アプリケーションは問題なく続行し、本来の処理を実行します。
コード スニペットを次に示します。
dtCreditCases.Rows.Clear();
foreach (task_creditcases item in creditCases)
{
DataRow drCases = dtCreditCases.NewRow();
// Then add the new row to the collection.
drCases["Case ID"] = item.c_Id;
drCases["Case Number"] = item.c_Name;
drCases["Case Topic"] = "Credit Case";
drCases["Case SubTopic"] = "Credit Case";
drCases["Account Number"] = item.c_EquationCustomerNumber
{"列 'ケース ID' はテーブルに属していません。"}drCases["Case Number"] = item.c_Name;
というメッセージが表示された行で、コードの実行が停止します。
内部例外は null です。
例外の詳細は次のとおりです。
System.ArgumentException はユーザー コードによって処理されませんでした Message=Column 'Case ID' は table に属していません。Source=System.Data
StackTrace: System.Data.DataRow.GetDataColumn(String columnName) at System.Data.DataRow.set_Item(String columnName, Object value) at SFDetachifier.SFDetachifier.bgProcessing_Production_ProgressChanged(Object sender, ProgressChangedEventArgs e) in C: \Dev\SFDetachifier_2013\SFDetachifier\SFDetachifier.cs: System.ComponentModel.BackgroundWorker.OnProgressChanged(ProgressChangedEventArgs e) の行 1304 System.ComponentModel.BackgroundWorker.ProgressReporter(Object arg)
InnerException:
データテーブルが問題ではないことはわかっています。他の場所で何かが起こっているに違いありません。データテーブルが再利用されているためかどうか疑問に思っています。
プロセスが完了したら、すべてのオブジェクトに対して明示的に dispose を呼び出す必要がありますか?