title: Keep C# app open and check the database
body: <p>I have this app. Is connected with one database and sending notification to android devices. I want to keep this app always open and check the database for new record. The only idea i had is to put in one infinity loop like <strong>while(true)</strong> but i have warning in the line with <strong>connection.Open();</strong> about memory and the program is stopping.</p>
  
  <pre><code>namespace AndroidParse
  {
  class Program
  {
  
      static void Main(string[] args)
      {
          //SqlDataReader reader;
          SqlConnection conn = new SqlConnection();
  
          string queryString = "SELECT TOP 1 device_id FROM Temp ORDER BY ID_Requests DESC";
          string connectionString = "XXXX";
  
          while (true)
          {
  
              using (SqlConnection connection = new SqlConnection(connectionString))
              {
                  SqlCommand command = new SqlCommand(queryString, connection);
  
                  connection.Open();
  
                  SqlDataReader reader = command.ExecuteReader();
                  try
                  {
                      while (reader.Read())
                      {
  
  
  
                          Console.WriteLine(reader[0]);
                          bool isPushMessageSend = false;
  
                          string postString = "";
                          string urlpath = "https://api.parse.com/1/push";
                          var httpWebRequest = (HttpWebRequest)WebRequest.Create(urlpath);
  
                          postString = "{\"data\": { \"alert\": \"Finally is working\" },\"where\": { \"device_id\": \"" + reader[0] + "\" }}";
                          httpWebRequest.ContentType = "application/json";
                          httpWebRequest.ContentLength = postString.Length;
                          httpWebRequest.Headers.Add("X-Parse-Application-Id", "XXXX");
                          httpWebRequest.Headers.Add("X-Parse-REST-API-KEY", "XXXX");
                          httpWebRequest.Method = "POST";
  
                          StreamWriter requestWriter = new StreamWriter(httpWebRequest.GetRequestStream());
                          requestWriter.Write(postString);
                          requestWriter.Close();
                          var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
  
  
                          using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                          {
                              var responseText = streamReader.ReadToEnd();
                              JObject jObjRes = JObject.Parse(responseText);
                              if (Convert.ToString(jObjRes).IndexOf("true") != -1)
                              {
                                  isPushMessageSend = true;
                              }
                          }
                          //--------------------------------------------------
                          SqlConnection sqlConnection1 = new SqlConnection(connectionString);
                          SqlCommand cmd = new SqlCommand();
                          SqlDataReader reader1;
  
                          cmd.CommandText = "delete from Temp where ID_Requests in (select top 1 ID_Requests from Temp order by ID_Requests desc)";
  
                          cmd.Connection = sqlConnection1;
  
                          sqlConnection1.Open();
  
                          reader1 = cmd.ExecuteReader();
                          // Data is accessible through the DataReader object here.
  
                          sqlConnection1.Close();
                          //--------------------------------------------------
                          Console.ReadLine();
                      }
                  }
                  finally
                  {
                      reader.Close();
                  }
                  connection.Close();
  
              }
          }
  
      }
  
      private static void println()
      {
          throw new NotImplementedException();
      }
  }
  
  }
  </code></pre>