0

我有一条奇怪的错误消息,即在 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

drCases["Case Number"] = item.c_Name;代码在消息{"Column 'Case ID' doesn't belongs to table ."}的行上停止执行。

内部异常 为空。

这是异常详细信息:

System.ArgumentException 未被用户代码处理 Message=Column 'Case ID' does not 属于 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) 在 C 中: \Dev\SFDetachifier_2013\SFDetachifier\SFDetachifier.cs:System.ComponentModel.BackgroundWorker.OnProgressChanged(ProgressChangedEventArgs e) 处 System.ComponentModel.BackgroundWorker.ProgressReporter(Object arg)
InnerException 的第 1304 行:

我知道数据表不是问题,其他地方肯定发生了一些事情,我想知道是不是因为数据表被重用了。

当我的过程完成后,我应该明确调用所有对象的 dispose 吗?

4

1 回答 1

0

恐怕您在第二次使用该表之前对 dtCreditCases.Columns 进行了一些更改。程序做它应该做的事情的原因是你可以把代码部分放在一个'try/catch'中(只是猜测)。

此问题的另一个原因是数据表由多线程程序中的 2 个线程共享。

于 2013-11-12T11:54:04.493 回答