Таймер останавливается в неподходящее время - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь заполнить некоторый TextBox на веб-странице таймером, но после заполнения первого TextBox таймер останавливается, и приложение ничего не делает.Я запускаю таймер с помощью кнопки.

Это код:

private void startBrute()
{
    foreach (HtmlElement user in webBrowser1.Document.All.GetElementsByName("username"))
    {
        user.InnerText = "user1";
    }
    foreach (HtmlElement pass in webBrowser1.Document.All.GetElementsByName("password"))
    {
        pass.InnerText = "123456";
    }
    foreach (HtmlElement search in webBrowser1.Document.GetElementsByTagName("button"))
    {
        if (search.InnerText == "Log in")
        {
            search.InvokeMember("click");
        }
    }
    timer2.Stop();
}

Я вызываю метод Brute в таймере таймера (timer2)

private void timer2_Tick_1(object sender, EventArgs e)
{
    startBrute();
}

И начинаютаймер в кнопке:

private void btnStart_Click(object sender, EventArgs e)
{
    timer2.Start();
}

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Может быть, ваш таймер остановится после ASP-страницы, поэтому вы должны объявить свой объект таймера из следующего пространства имен

System.Web.UI.Timer

0 голосов
/ 21 января 2019

Попробуйте вызвать javascript ajax и дайте контроллеру спать:

// ПРОСМОТРЕТЬ JAVASCRIPT:

 function callSleep() {
  var dataobject = { sleepSec: 1 }
  $.ajax({
    aysnc: true,
    url: '@Url.Action("sleepSeconds", "JobSetup")',
    type: "POST",
    data: dataobject,
     success: function (results) {
          // when done, sleepSeconds() returns here
     }    
   });
 }

// КОНТРОЛЛЕР:

 [HttpPost, ValidateInput(false)]
 public ActionResult sleepSeconds(double sleepSec)
 {
  int secs = (int)(sleepSec * 1000.00);
  System.Threading.Thread.Sleep(secs);
  return Json("{\"SLEEP\":\"" + sleepSec + "\"}",JsonRequestBehavior.AllowGet);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...