title: When try call method every minute it called just twice
body: <p>When I call <code>ScheduleBackUp()</code> in <code>form_load</code> the method execute just twice!</p>
  
  <p>this is my class:</p>
  
  <pre><code>class BackupDBs : INotifyPropertyChanged
      {
          public event PropertyChangedEventHandler PropertyChanged;
          private readonly object _lock = new object();
          private int _state = -1;
          string nameBackupFolder;    
  
          public void ScheduleBackUp()
          {
              var startTimeSpan = TimeSpan.Zero;
              var periodTimeSpan = TimeSpan.FromMinutes(1);
  
              var timer = new System.Threading.Timer((e) =&gt;
              { 
                  DoBackup();
              }, null, startTimeSpan, periodTimeSpan);
  
          }
  
          public int MyState
          {
              get
              {
                  return _state;
              }
              set
              {
                  lock (_lock)
                  {
                      if (value != _state)
                      {
                          _state = value;
                          NotifyStateChanged("MyState");
                      }
                  }
              }
          }
  
          private void NotifyStateChanged(string propertyName)
          {
              PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
          }
  
          public void DoBackup()
          {
              MyState = 0;
  
              try
              {
                  MyState = 1;
                  MyState = 2;
                  CreateBackupFolder();
              }
              catch
              {
                  MyState = 3;                
                  return;
              }
  
              try
              {
                  var con = new MainCon();
                  con.sqlQuery("BACKUP DATABASE [" + DataCenter.DEFAULT_DB_NAME + "] TO DISK='" + nameBackupFolder + "\\" + DataCenter.DEFAULT_DB_NAME + "-" + DateTime.Now.ToString("yyyy-MM-dd--HH-mm-ss") + ".bak'");
  
                  con.nonQueryEx();
                  con.closecon();
  
                  MyState = 4;
              }
              catch
              {
                  MyState = 5;                
              }
          }
  
   public void CreateBackupFolder()
          {
              //couz we need create to each DB special folder so we need to get the descr of default DB           
              string desc = DataCenter.DEFAULT_DB_DESCRIPTION;
  
              //Get the default path for backup
              string pathBackup = DataCenter.BACKUP_PATH;
  
              //Preaper the name for our folder
              nameBackupFolder = pathBackup + @"\" + "backup for " + desc;
  
              // Create a new target folder, if not exists.
              if (!System.IO.Directory.Exists(nameBackupFolder))
              {
                  System.IO.Directory.CreateDirectory(nameBackupFolder);
              }
          }
  </code></pre>
  
  <p>I use this to call the method :</p>
  
  <pre><code>private Classes.BackupDBs budb = new Classes.BackupDBs();
  budb.ScheduleBackUp();
  </code></pre>
  
  <p>Just two successful backup happened then nothing happened.
  Kindly what did I miss?</p>