c# 写的一个操作数据库的程序,因为要循环对数据库进行操作,导致堆栈溢出,请问有什么好的解决办法
CLR无法从COM上下文0x5600e8转换为COM上下文0x560258,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送Wind...
CLR 无法从 COM 上下文 0x5600e8 转换为 COM 上下文 0x560258,这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作。这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积。要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。 这是一个错误,还有就是运行到后期报堆栈溢出。条件描述:每次循环都要针对140多万条数据进行筛选,然后在进行update
展开
1个回答
2012-12-12
展开全部
你这个情况, 我感觉应该是属于 处理超时 了.
也就是你一个 数据库命令, 执行时间超过 60秒了, 数据库还没有处理完.
不知道你是什么数据库
如果是 SQL Server 的话, 好像是可以使用一个 异步的处理机制来处理的。
也就是 把命令发给数据库, 然后直接返回。
数据库长时间处理完毕后, 再回调一个方法。
也就是你一个 数据库命令, 执行时间超过 60秒了, 数据库还没有处理完.
不知道你是什么数据库
如果是 SQL Server 的话, 好像是可以使用一个 异步的处理机制来处理的。
也就是 把命令发给数据库, 然后直接返回。
数据库长时间处理完毕后, 再回调一个方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询