我在尝试对类型为 Expression> 的 LambdaExpression 调用 Compile() 时遇到问题,该表达式的深度约为 400。较小的值不会导致任何问题。我找不到任何有关此类限制的信息。谁能澄清这一点吗?我可以增加这个限制吗?
更新:
抱歉,忘了提及,我收到 StackOverflowException:
System.Core.dll 中发生“System.StackOverflowException”类型的未处理异常
{无法计算表达式,因为当前线程处于堆栈溢出状态。}
您确实遇到了堆栈大小的限制(尽管我质疑 400+ 项 lambda 是否明智)。绕过这个问题的最简单方法是创建一个新线程,专门用于使用更大的堆栈执行此编译,使用以堆栈大小作为参数的线程构造函数:http://msdn.microsoft.com/en-us/library/ms149581.aspx http://msdn.microsoft.com/en-us/library/ms149581.aspx
在该线程中调用编译并根据需要增加堆栈大小参数。我相信它以字节为单位,这将使默认值约为 1048576,因此从这里开始并根据需要提高它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)