2016-09-21 48 views
0

「System.InvalidOperationException」類型的未處理的異常發生時我想通過一個BackgroundWorker如何處理System.InvalidOperationException?

這裏顯示在列表框中數據庫中的數據是代碼:

public partial class Window1 : Window 
{ 
     public Window1() 
     { 
      InitializeComponent(); 
     } 
     private List<Product> products; 

     private void LstProduct_loaded(object sender, RoutedEventArgs e) 
     { 
      BackgroundWorker Worker = new BackgroundWorker(); 
      Worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted); 
      Worker.DoWork += new DoWorkEventHandler(worker_DoWork); 
      Worker.RunWorkerAsync(); 
     } 

     private void worker_DoWork(object sender, DoWorkEventArgs e) 
     { 
      products = App.StoreDb.GetProducts(); 

     } 

     private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
     { 
      LoadingGrid.Visibility = Visibility.Collapsed; 
      Lstproducts.ItemsSource = products; 
     } 



} 
+0

後堆棧跟蹤。 – raven

回答

0

嘗試使用

private void LstProduct_loaded(object sender, RoutedEventArgs e) 
{ 
    //create thread 
    ThreadStart myThreadStart = new ThreadStart(MyThreadRoutine); 
    Thread myThread = new Thread(myThreadStart); 
    myThread.ApartmentState = ApartmentState.STA; 
    myThread.Start(); 
} 

//function 
private void MyThreadRoutine() 
    { 
     this.Invoke((MethodInvoker)delegate {  
      products = App.StoreDb.GetProducts(); 
      this.LoadingGrid.Visibility = Visibility.Collapsed; 
      this.Lstproducts.ItemsSource = products; 
     }); 
    }