Visualizzazione dei risultati da 1 a 7 su 7

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da bugino Visualizza il messaggio
    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);
                }
            }
    }
    Ma ti da un errore di cross-threading?
    Se hai messo il metodo "corretto", quello cioè di esecuzione lunga da far fare al thread asincrono, posta il codice del metodo doWork corretto. Ma poi..
    codice:
    vm.MethodCommand.Execute(null);
    Cosa fa esattamente? Query su database?
    Devi postare anche quel codice, altrimenti come facciamo a capire qual'è l'errore..

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    6
    Quote Originariamente inviata da renygade Visualizza il messaggio
    Ma ti da un errore di cross-threading?
    Se hai messo il metodo "corretto", quello cioè di esecuzione lunga da far fare al thread asincrono, posta il codice del metodo doWork corretto. Ma poi..
    codice:
    vm.MethodCommand.Execute(null);
    Cosa fa esattamente? Query su database?
    Devi postare anche quel codice, altrimenti come facciamo a capire qual'è l'errore..
    in pratica con il metodo vm.FormulaPizzaCommand.Execute(null); entro nel mio ViewModel
    dove gestisco il comando del bottone della mia GUI
    codice:
    #region Constructor
            public SimulatViewModel(SimulatModel model)
            {
                this._model = model;
                this.FormulaCommand = new RelayCommand(this.Formula);
            }
    
    public RelayCommand FormulaCommand { get; set; }
    
    private void Formula()
    {
                    string FormulaNumber = "1001";
                    if (!_model.ExistsFormula(FormulaNumber))
                    {
                        _model.InsertImage();
    }
    in pratica scrivo un immagine nel db e l'assegno alla formula

    l'errore è thread già in uso impossibile accedere

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.