title: How can I make the progress bar update fast enough?
body: <p>I'm using a progress bar to show the user how far along the process is. It has 17 steps, and it can take anywhere from ~5 seconds to two or three minutes depending on the weather (well, database)</p>
  
  <p>I had no problem with this in XP, the progress bar went fine, but when testing it in vista I found that it is no longer the case.</p>
  
  <p>For example: if it takes closer to 5 seconds, it <em>might</em> make it a 1/3 of the way through before disappearing because it's completed. Even though it's progress is at 17 of 17, it doesn't show it. I believe this is because of the animation Vista imposes on progress bars and the animation cannot finish fast enough.</p>
  
  <p>Does anyone know how I can correct this?</p>
  
  <p>Here is the code:</p>
  
  <p>This is the part that updates the progress bar, waiting is the form that has the progress bar.</p>
  
  <pre><code>        int progress = 1;
          //1 Cash Receipt Items
          waiting.setProgress(progress, 18, progress, "Cash Receipt Items");
          tblCashReceiptsApplyToTableAdapter1.Fill(rentalEaseDataSet1.tblCashReceiptsApplyTo);
          progress++;
          //2 Cash Receipts
          waiting.setProgress(progress, "Cash Receipts");
          tblCashReceiptsTableAdapter1.Fill(rentalEaseDataSet1.tblCashReceipts);
          progress++;
          //3 Checkbook Codes
          waiting.setProgress(progress, "Checkbook Codes");
          tblCheckbookCodeTableAdapter1.Fill(rentalEaseDataSet1.tblCheckbookCode);
          progress++;
          //4 Checkbook Entries
          waiting.setProgress(progress, "Checkbook Entries");
          tblCheckbookEntryTableAdapter1.Fill(rentalEaseDataSet1.tblCheckbookEntry);
          progress++;
          //5 Checkbooks
          waiting.setProgress(progress, "Checkbooks");
          tblCheckbookTableAdapter1.Fill(rentalEaseDataSet1.tblCheckbook);
          progress++;
          //6 Companies
          waiting.setProgress(progress, "Companies");
          tblCompanyTableAdapter1.Fill(rentalEaseDataSet1.tblCompany);
          progress++;
          //7 Expenses
          waiting.setProgress(progress, "Expenses");
          tblExpenseTableAdapter1.Fill(rentalEaseDataSet1.tblExpense);
          progress++;
          //8 Incomes
          waiting.setProgress(progress, "Incomes");
          tblIncomeTableAdapter1.Fill(rentalEaseDataSet1.tblIncome);
          progress++;
          //9 Properties
          waiting.setProgress(progress, "Properties");
          tblPropertyTableAdapter1.Fill(rentalEaseDataSet1.tblProperty);
          progress++;
          //10 Rental Units
          waiting.setProgress(progress, "Rental Units");
          tblRentalUnitTableAdapter1.Fill(rentalEaseDataSet1.tblRentalUnit);
          progress++;
          //11 Tenant Status Values
          waiting.setProgress(progress, "Tenant Status Values");
          tblTenantStatusTableAdapter1.Fill(rentalEaseDataSet1.tblTenantStatus);
          progress++;
          //12 Tenants
          waiting.setProgress(progress, "Tenants");
          tblTenantTableAdapter1.Fill(rentalEaseDataSet1.tblTenant);
          progress++;
          //13 Tenant Transaction Codes
          waiting.setProgress(progress, "Tenant Transaction Codes");
          tblTenantTransCodeTableAdapter1.Fill(rentalEaseDataSet1.tblTenantTransCode);
          progress++;
          //14 Transactions
          waiting.setProgress(progress, "Transactions");
          tblTransactionTableAdapter1.Fill(rentalEaseDataSet1.tblTransaction);
          progress++;
          //15 Vendors
          waiting.setProgress(progress, "Vendors");
          tblVendorTableAdapter1.Fill(rentalEaseDataSet1.tblVendor);
          progress++;
          //16 Work Order Categories
          waiting.setProgress(progress, "Work Order Categories");
          tblWorkOrderCategoryTableAdapter1.Fill(rentalEaseDataSet1.tblWorkOrderCategory);
          progress++;
          //17 Work Orders
          waiting.setProgress(progress, "Work Orders");
          tblWorkOrderTableAdapter1.Fill(rentalEaseDataSet1.tblWorkOrder);
          progress++;
          //18 Stored procs
          waiting.setProgress(progress, "Stored Procedures");
          getAllCheckbookBalancesTableAdapter1.Fill(rentalEaseDataSet1.GetAllCheckbookBalances);
          getAllTenantBalancesTableAdapter1.Fill(rentalEaseDataSet1.GetAllTenantBalances);
          //getCheckbookBalanceTableAdapter1;
          //getTenantBalanceTableAdapter1;
          getTenantStatusID_CurrentTableAdapter1.Fill(rentalEaseDataSet1.GetTenantStatusID_Current);
          getTenantStatusID_FutureTableAdapter1.Fill(rentalEaseDataSet1.GetTenantStatusID_Future);
          getTenantStatusID_PastTableAdapter1.Fill(rentalEaseDataSet1.GetTenantStatusID_Past);
          selectVacantRentalUnitsByIDTableAdapter1.Fill(rentalEaseDataSet1.SelectVacantRentalUnitsByID);
          getRentBasedBalancesTableAdapter1.Fill(rentalEaseDataSet1.GetRentBasedBalances);
          getAgingBalanceTableAdapter2.Fill(rentalEaseDataSet1.GetAgingBalance);
  
  
          waiting.Close();
  </code></pre>
  
  <p>Here is the waiting form:</p>
  
  <pre><code>public partial class PleaseWaitDialog : Form {
      public PleaseWaitDialog() {
          CheckForIllegalCrossThreadCalls = false;
          InitializeComponent();
      }
  
      public void setProgress(int current, int max, int min, string loadItem) {
          Debug.Assert(min &lt;= max, "Minimum is bigger than the maximum!");
          Debug.Assert(current &gt;= min, "The current progress is less than the minimum progress!");
          Debug.Assert(current &lt;= max, "The progress is greater than the maximum progress!");
  
          prgLoad.Minimum = min;
          prgLoad.Maximum = max;
          prgLoad.Value = current;
          lblLoadItem.Text = loadItem;
      }
  
      public void setProgress(int current, string loadItem) {
          this.setProgress(current, prgLoad.Maximum, prgLoad.Minimum, loadItem);
      }
  }
  </code></pre>