title: WPF, how to implement async/await?
body: <p>I'm learning how to webscrape in WPF. I check the site every 20sec, update my ObservableCollection (myClients) according to search results and display it in Listview (myList). I have 2 Buttons, one to start search and one to stop it.</p>
  
  <p>I didn't know how to implement button autoclick every X sec (which would solve all my problems, am i right?) so i had to use Task.Delay(20000). Program works, it doesn't freeze right at the start like if i had used Thread.Sleep(), but if i press the Stop button and then Start, everything freezes.</p>
  
  <p>I will upload only portion of the code that seems to be the problem. Note that the whole program at the moment is mostly reverse-engineered from several different programs as i am still a beginner.</p>
  
  <pre><code>        private async void Button_Click(object sender, RoutedEventArgs e) //Start button
      {
          string car;
          string price;
          string link;
  
          wantToAbort = false;
  
          while (!wantToAbort)
          {
  
              // ----Simulate GET request----
  
              //-----End GET----
  
              myList.ItemsSource = myClients;
              string searchCar = txtBlock.Text + " " + txtBlock2.Text;
  
              var articleNodes = htmlDoc.DocumentNode.SelectNodes($"//*[@id='main_content']/div[1]/div[2]/ul[1]//*[text()[contains(., '{searchCar}')]]");
  
              if (articleNodes != null &amp;&amp; articleNodes.Any())
              {
  
                  foreach (var articleNode in articleNodes)
                  {
                      car = WebUtility.HtmlDecode(articleNode.InnerText);
                      price = WebUtility.HtmlDecode(articleNode.ParentNode.ParentNode.SelectSingleNode("span").InnerText);
                      link = WebUtility.HtmlDecode(articleNode.ParentNode.ParentNode.Attributes["href"].Value);
  
                      var tempUser = new User(car, price, link);
                      if (!myClients.Any(x=&gt;x.Link == tempUser.Link))
                      {
                          myClients.Insert(0, tempUser); //Inserts new item if Links are different 
                          txtBlock3.Text = "Searching...";
                      }
                  }
  
                  await Task.Delay(20000); //This seems to be an issue
              }
  
          }
      }
  
  
      private void Button_Click_1(object sender, RoutedEventArgs e) //Stop button
      {
          wantToAbort = true;
          txtBlock3.Text = "Ready to search again!";
      }
  </code></pre>