/// <summary> /// Runs Selected AddIn new thread /// </summary> private void RunBackgroundAddIn() { // Do the work. List <int> numbersProcessed = addin.ProcessNumbers(1, 20); // update UI on UI thread this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart) delegate() { lstNumbers.ItemsSource = numbersProcessed; progressBar.Value = 0; // Release the add-in addin = null; } ); }
/// <summary> /// Use the selected AddIn /// </summary> private void btnUseAddin_Click(object sender, RoutedEventArgs e) { if (lstAddIns.SelectedIndex != -1) { // get selected addin AddInToken token = (AddInToken)lstAddIns.SelectedItem; addin = token.Activate <HostView.NumberProcessorHostView>(AddInSecurityLevel.Internet); addin.Initialize(automationHost); // process addin on new thread Thread thread = new Thread(RunBackgroundAddIn); thread.Start(); } else { MessageBox.Show("You need to select an addin first"); } }