si so che tutto viene svolto all'interno del doWork, infatti al suo interno faccio una specie di simulazione con il ciclo for.
Ecco il resto del codice.
quando metto all'interno del doWork la mia chiamata al vero metodo scrivendo:
vm.MethodCommand.Execute(null);
mi da un eccezione dicendomi che il thread è già occupato
codice:public partial class ContentUserControl : UserControl { //connect the ModelView with the View #region Constructor private readonly SimulComponentViewModel _viewModel; public ContentUserControl(SimulationComponentViewModel viewModel) { InitializeComponent(); this._viewModel = viewModel; this.DataContext = viewModel; } #endregion private void MethodButton_Click(object sender, RoutedEventArgs e) { SimulComponentViewModel vm = this.DataContext as SimulComponentViewModel; if (vm != null) { BackgroundWorker bgw = new BackgroundWorker(); bgw.WorkerReportsProgress = true; bgw.DoWork += bgw_DoWork; bgw.ProgressChanged += bgw_ProgressChanged; bgw.RunWorkerAsync(); vm.MethodCommand.Execute(null); } } private void bgw_ProgressChanged(object sender, ProgressChangedEventArgs e) { //TextBoxControll.Value = e.ProgressPercentage; TextBoxControll.IsEnabled = true; TextBoxControll.Text = e.ProgressPercentage.ToString() + " %"; } private void bgw_DoWork(object sender, DoWorkEventArgs e) { for (int i = 0; i <= 100; i++) { (sender as BackgroundWorker).ReportProgress(i); Thread.Sleep(25); } } }


Rispondi quotando