gpt4 book ai didi

C# 和断点 - 我们这里有魔术师吗?

转载 作者:行者123 更新时间:2023-11-30 15:35:05 25 4
gpt4 key购买 nike

我有这个:

public static void ByLinkText(string text)
{
for (var i = 0; i < 50; i++)
{
try
{
Setup.Driver.FindElement(By.LinkText(text)).Click();
return;
}
catch (Exception)
{
}
}
}

(中间的奇怪代码是 selenium - 让我们跳过它,这里不是这种情况)

好的,所以我有这个 ByLinkText() 方法,你在这里看不到的是,我无限地重复这个方法,直到这个中间的东西正确执行,然后点击那个 之后返回

所以:这段中间代码没有正确执行,我想知道为什么,那么我在做什么?我在 catch 部分放置了一个断点。怎么了?什么都没有(而且 ByLinkText() 仍然无限地继续下去!)。

现在,你会告诉我“嘿!那个中间代码不会扔任何东西!”,但是哦,甜蜜的愿望......那个中间代码可以做两件事:要么向我扔东西,要么像它应该的那样(prove1prove2)。

最后,这到底是怎么回事?关于断点。一旦我将断点放在 return 上(就在神奇的代码之后!),代码就会正确执行!在编程世界中,断点修复我的应用程序怎么可能!?

最佳答案

当断点使您的应用程序正常运行时,这意味着您的代码可能存在计时问题。每当您在断点处停止时,停止都会引入延迟,这可能会让其他处理继续进行而不会出错。

这就是为什么您有时会看到 Thread.Sleep(N); 到处都是代码。那是一个编码员举起他/她的 ARM 说“我不知道。只是在那里睡一觉。”

事实上,试一试。放一个 Thread.Sleep(3000);断点在哪里,看看会发生什么。我从来不建议将此作为解决方案,但它可能是对理论的一个很好的检验。

关于C# 和断点 - 我们这里有魔术师吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15455845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com