c# - 在 DocumentCompleted 中运行一次函数
问题描述
我想要做的是在 DocumentCompleted 事件中运行一次函数,我知道它会在浏览器加载 iframe/外部链接时触发多次,我想不出办法来做到这一点。
我试过的:
代码:
private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
bool hasFiredOnce = false;
if ((sender as WebBrowser).ReadyState == WebBrowserReadyState.Complete)
{
try
{
// 1) - Find out what url we are viewing and update accordingly ...
WebBrowser browser = (WebBrowser)sender;
var current_url = browser.Url.AbsoluteUri;
txtBoxUrl.Text = current_url;
// Check for any saved answers ...
if (hasFiredOnce == false)
{
if (Helpers.CheckForSavedAnswers(txtBoxUrl.Text) != "NONE")
{
hasFiredOnce = true;
linkLabelAnswerText.Text = "Stored answer found!";
Helpers.ReturnMessage(Helpers.CheckForSavedAnswers(txtBoxUrl.Text));
}
else
{
linkLabelAnswerText.Text = "...";
hasFiredOnce = false;
}
Helpers.ReturnMessage("This should fire once!");
}
}
catch (Exception ex)
{
Helpers.DebugLogging("[" + DateTime.Now + "]-[" + ex.ToString() + "]");
}
}
}
是设置一个布尔值,如果是false
我们运行该函数Helpers.CheckForSavedAnswers(txtBoxUrl.Text)
,然后将其设置为true
它不会再次运行,但确实如此,我想我在这里遗漏了一些明显很小的东西,任何帮助将不胜感激。
解决方案
我同意迈克尔的观点,问题是 HasFiredOnce 是在你试图控制的函数中声明和初始化的。使其成为全局变量,或将其存储在可以全局访问的其他位置(例如,在数据库或文件中)。
推荐阅读
- javascript - How to search and replace elements from one URL to make a new one?
- javascript - Getting error: Type 'typeof B' is not assignable to type 'typeof A' for class B that extends A
- javascript - Owl carousel fade not working with bootstrap 4
- datetime - How to get error count from logs for last x hour
- mysql - Dockerfile to install Nginx and MySQL in same image
- java - Java object doesn't seem to be inheriting the variables of it's parent class
- java - 如何使用 Jackson 将字符串反序列化为自定义对象?
- python - Pandas - take() 不接受布尔索引器
- javascript - 渲染数组对象列表(Javascript)
- html - 在单个表格元素中调整图像高度