【发布时间】:2013-11-12 11:02:32
【问题描述】:
在 Visual Studio 或 \bin\release 目录中的可执行文件中运行我的 WinForms c# 应用程序时,我收到一条奇怪的错误消息,指出数据表不包含我正在引用(设置)的字段。
我知道该字段在那里,并且我只在运行多次使用数据表对象的进程时收到错误消息。
当我单击“继续”(在可执行文件中)时,应用程序会继续正常运行并执行它应该执行的操作。
这是一个代码sn-p:
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; 行停止执行,并显示消息{"Column 'Case ID' doesn't属于table ."}。
内部异常为空。
这里是异常细节:
System.ArgumentException 未被用户代码 Message=Column 处理 “案例 ID”不属于表。源=System.Data
堆栈跟踪: 在 System.Data.DataRow.GetDataColumn(字符串列名) 在 System.Data.DataRow.set_Item(字符串列名,对象值) 在 SFDetachifier.SFDetachifier.bgProcessing_Production_ProgressChanged(对象 发件人,ProgressChangedEventArgs e) 在 C:\Dev\SFDetachifier_2013\SFDetachifier\SFDetachifier.cs:1304 行 在 System.ComponentModel.BackgroundWorker.OnProgressChanged(ProgressChangedEventArgs e) 在 System.ComponentModel.BackgroundWorker.ProgressReporter(Object arg)
内部异常:
我知道数据表不是问题,肯定是其他地方发生了一些事情,我想知道是不是因为数据表被重复使用了。
我是否应该在我的进程完成后显式调用所有对象的 dispose?
【问题讨论】:
-
你可以在 using(...) 子句中使用它们...
-
包括所有IDsiposable elemnets,使用它将负责处理。
-
您可以在此处发布错误的原始文本。
-
对不起,我不明白你所说的“在其中包含所有 iDisposable 元素”是什么意思 - 请给我一个例子吗?
-
@Vasili Ruzov:我会这样做