我在尝试在Expression< Func< MyType,bool>>类型的LambdaExpression上调用Compile()时遇到问题。其深度约为400.较小的值不会导致任何问题。我找不到任何关于这种限制的事情。任何人都可以澄清这个吗?我可以增加这个限额吗?
UPD: 对不起,忘了提,我收到了StackOverflowException:
System.Core.dll中发生未处理的“System.StackOverflowException”类型异常 {无法计算表达式,因为当前线程处于堆栈溢出状态。}
答案 0 :(得分:3)
你正在合法地限制堆栈大小(虽然我质疑400多项lambda的智慧)。绕过它的最简单方法是使用以堆栈大小作为参数的线程构造函数创建一个专门用于使用更大堆栈执行此编译的新线程:http://msdn.microsoft.com/en-us/library/ms149581.aspx
在该线程中调用compile并根据需要增加堆栈大小参数。我相信这是以字节为单位,这将使默认值大约为1048576,所以从那里开始并根据需要提高它。