我需要帮助摆脱这个错误:



在此代码执行期间发生的情况:

int i = 2;

while(i <= lastRowPOPT)
{
     RefDocNo = poptSheet.Cells[i, 1].Text;
     RefItem = poptSheet.Cells[i, 2].Text;
     Plnt = poptSheet.Cells[i, 3].Text;
     concat = RefDocNo + RefItem + Plnt;
     poptSheet.Cells[i, 8] = concat;
     poptSheet.Range["E" + i, "G" + i].Copy(Type.Missing);
     poptSheet.Range["I" + i, "K" + i].PasteSpecial(Microsoft.Office.Interop.Excel.XlPasteType.xlPasteAll);

     i++;
}

大约有 4700 行,它完成了 1000 行之类的工作,然后抛出了它。此外,执行持续约 4 分钟,但我认为大部分时间都会停止。

最佳答案

我已经想通了。显然,当外部进程(在本例中为 Excel)运行时间过长时,操作系统认为它已接管并且不让其他应用程序运行。诊断很可怕,但解决方案很简单。在一个或多个地方添加以下代码行以允许其他进程执行,现在长时间执行完成没有问题。

System.Windows.Forms.Application.DoEvents()

关于c# - 检测到 DisconectedContext,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22606666/

10-13 05:37