DateTime tThen = DateTime.Now;
do
{
Application.DoEvents();
} while (!cefGlueBrowserForm.Done || tThen.AddSeconds(15) > DateTime.Now);
string htmlSource = cefGlueBrowserForm.DocumentDomHtml;
propertyBag.GetResponse = () => new MemoryStream(Encoding.UTF8.GetBytes(htmlSource));
cefGlueBrowserForm.Dispose();
几个小时后我排队
while (!cefGlueBrowserForm.Done || tThen.AddSeconds(15) > DateTime.Now);
的例外情况
System.Windows.Forms.dll中出现未处理的“System.StackOverflowException”类型异常
以下是错误说明: http://msdn.microsoft.com/en-us/library/w6sxk224%28v=vs.90%29.aspx
确保没有无限循环或无限递归。
太多的方法调用通常表示非常深或无限的递归。
所以我该怎么办?我需要等到cefGlueBrowserForm中的一些代码完成或达到时间。但为什么然后错误,我有时间检查...
答案 0 :(得分:1)
条件OR运算符(||)执行其bool操作数的逻辑或。如果第一个操作数的计算结果为true,则不计算第二个操作数。
如果第一个条件为真,则不会检查||
中的第二个条件。
该程序说明了概念
class Program
{
static void Main(string[] args)
{
Console.WriteLine( p() || q() ); //prints Return True from p , True
Console.WriteLine( q() || p() ); //prints Return False from q, Return true from p, True
}
static bool p()
{
Console.WriteLine("Return True");
return true;
}
static bool q()
{
Console.WriteLine("Return False");
return false;
}
}
答案 1 :(得分:1)
Application.DoEvents
是邪恶的,不要使用它。它可能会导致无法解释的效果 - 比如StackOverflow。应该避免在UI线程中忙碌等待。要修复它,请使用例如BackgroundWorker
。