我有一个奇怪的错误消息,即在Visual Studio中运行我的WinForms c#app或\ bin \ release目录中的可执行文件时,数据表不包含我正在引用(设置)的字段。
我知道该字段在那里,当我运行多次使用数据表对象的进程时,我只收到错误消息。
当我单击“继续”(在可执行文件中)时,应用程序将继续运行,没有任何问题,并且应该执行的操作。
以下是代码段:
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
代码在drCases["Case Number"] = item.c_Name;
行停止执行,消息 {“列'案例ID'不属于表格。”} 。
内部异常为空。
这是一个例外细节:
System.ArgumentException未被用户代码Message = Column处理 '案例ID'不属于表格。来源= System.Data
堆栈跟踪: 在System.Data.DataRow.GetDataColumn(String columnName) at System.Data.DataRow.set_Item(String columnName,Object value) 在SFDetachifier.SFDetachifier.bgProcessing_Production_ProgressChanged(对象 发件人,ProgressChangedEventArgs e)in C:\ Dev \ SFDetachifier_2013 \ SFDetachifier \ SFDetachifier.cs:第1304行 在System.ComponentModel.BackgroundWorker.OnProgressChanged(ProgressChangedEventArgs) E) 在System.ComponentModel.BackgroundWorker.ProgressReporter(Object arg)
的InnerException:
我知道数据表不是问题,其他地方肯定会发生一些事情,我想知道是不是因为数据表被重用了。
我的进程完成后,是否应该在所有对象上显式调用dispose?
答案 0 :(得分:0)
我担心你在第二次使用表之前对dtCreditCases.Columns做了一些更改。程序执行它应该做的事情的原因是你可以将代码部分放在'try / catch'中(只是猜测)。
此问题的另一个原因是数据表由多线程程序中的2个线程共享。