我需要帮助消除此错误:
“为此 RuntimeCallableWrapper 转换到 COM 上下文 0x465608
失败并出现以下错误:系统调用失败。 (例外情况来自
HRESULT:0x80010100(RPC_E_SYS_CALL_FAILED))。这通常是
因为这个 RuntimeCallableWrapper 所在的 COM 上下文 0x465608
创建已断开连接或正忙于执行其他操作。
从当前 COM 上下文中释放接口(COM 上下文
0x465498)。这可能会导致损坏或数据丢失。为了避免这种情况
问题,请确保所有 COM 上下文/单元/线程保持不变
处于活动状态并且可用于上下文转换,直到应用程序
完全由代表 RuntimeCallableWrappers 完成
存在于其中的 COM 组件。”
执行此代码期间会发生以下情况:
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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)