Однократный запуск функции в DocumentCompleted - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь запустить функцию один раз в событии 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() + "]");
                }
            }
        }

Это установка bool, если это false, мы запускаем функцию Helpers.CheckForSavedAnswers(txtBoxUrl.Text), затем установите его на true, чтобы он больше не запускался, но он работает, я думаю, что мне не хватает чего-то явно небольшого здесь, любая помощь будет оценена.

1 Ответ

0 голосов
/ 01 августа 2020

Я согласен с Майклом, проблема в том, что HasFiredOnce объявлен и инициализирован внутри функции, которую вы пытаетесь контролировать. Сделайте его глобальной переменной или сохраните в другом месте (например, в базе данных или файле), к которому можно получить доступ глобально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...