0

ich zahlreiche Versuche haben versucht, dieses Problem oder Fehler zu beheben, zum einen durch die .tbd Dateien von C Löschen: \ Users \\ AppData \ Local \ Microsoft \ Visualstudio \ x.0Toolboxelemente in VS abgeblendet 2010

ich habe auch versucht, diese:

Visual Studio Menü "Extras" "Optionen" Untermenü "Windows Form Designer" Registerkarte Register "Allgemein" Set "AutoToolboxPopulate" auf "True"

Die ToolBox Liste füllt immer noch nicht korrekt und die "BackgroundWorker" Komponente I Notwendigkeit ist ausgegraut. Irgendwelche Ideen?

+0

Können Sie einen (Link zu a) Screenshot posten. Es könnte etwas zeigen, was du verpasst hast. – ChrisF

+0

Sie müssen den Projekttyp dokumentieren. Ein Fix ist das Klicken mit der rechten Maustaste auf die Toolbox und das Klicken auf Zurücksetzen. –

+0

@ChrisF, hier ist der Link: http://dl.dropbox.com/u/14305935/BGW.png –

Antwort

1

ich eine Lösung für mein Problem gefunden haben, mit der BackgroundWorker Klasse in C#, ohne Verwenden der Komponente aus der Toolbox. In diesem Fall musste ich zwei separate backgroundWorkers:

using System.Threading; 

public partial class MainWindow : Window 
    { 
     private BackgroundWorker bw1 = new BackgroundWorker(); 
     private BackgroundWorker bw2 = new BackgroundWorker(); 

     public MainWindow() 
     { 
      InitializeComponent(); 

      bw1.WorkerReportsProgress = true; 
      bw1.DoWork += new DoWorkEventHandler(bw1_DoWork); 
      bw1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw1_RunWorkerCompleted); 
      bw1.ProgressChanged += new ProgressChangedEventHandler(bw1_ProgressChanged); 

      bw2.WorkerReportsProgress = true; 
      bw2.DoWork += new DoWorkEventHandler(bw2_DoWork2); 
      bw2.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw2_RunWorkerCompleted); 
      bw2.ProgressChanged += new ProgressChangedEventHandler(bw1_ProgressChanged); 
     } 


     private void bw1_DoWork(object sender, DoWorkEventArgs e) 
     { 
      StatsProcessor proc = new StatsProcessor(); 
      proc.CompareStats(listText1, listText2);  
     } 

     private void bw2_DoWork2(object sender, DoWorkEventArgs e) 
     { 
      StatsParser parser = new StatsParser(); 
     } 

     private void bw1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
     { 
      progressBar2.IsIndeterminate = false; 
      progressBar2.Value = 100; 

      btnCompareStats.IsEnabled = true; 

     } 

     private void bw2_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
     { 
      progressBar1.IsIndeterminate = false; 
      progressBar1.Value = 100; 

      btnFetchStats.IsEnabled = true; 
     } 

     private void bw1_ProgressChanged(object sender, ProgressChangedEventArgs e) 
     { 
      this.progressBar2.Value = e.ProgressPercentage; 
     } 

     private void bw2_ProgressChanged(object sender, ProgressChangedEventArgs e) 
     { 
      this.progressBar1.Value = e.ProgressPercentage; 
     } 

     private void btnCompare_Click(object sender, EventArgs e) 
     { 
      btnCompareStats.IsEnabled = false; 

      StatsProcessor proc = new StatsProcessor(); 

      if (bw1.IsBusy != true) 
        { 
         progressBar2.IsIndeterminate = true; 

         // Start the asynchronous operation. 
         bw1.RunWorkerAsync(); 
        }  

     } 

     private void btnFetchStats_Click(object sender, RoutedEventArgs e) 
     { 
      btnFetchStats.IsEnabled = false; 

      if (bw2.IsBusy != true) 
       { 
         progressBar1.IsIndeterminate = true; 

         // Start the asynchronous operation. 
         bw2.RunWorkerAsync(); 
       } 
     } 
} 
1

Mindestens eine Abhilfe: erklären die BackgroundWorker in Code, aber vergessen Sie nicht, um es richtig zu entsorgen:

public class MyForm : Form 
{ 
    private BackgroundWorker bgWorker = null; 

    public MyForm() 
    { 
    InitializeComponent(); 

    this.bgWorker = new BackgroundWorker; //TODO: set properties and event handlers 
    } 

    public override void Dispose(bool disposing) 
    { 
    //TODO: copy from MyForm.Designer.cs and add: 
    Backgroundworker bgw = this.bgWorker; 
    this.bgWorker = null; 
    if (disposing && bgw != null) 
    { 
     try 
     { 
     //TODO: release event handlers 
     bgw.Dispose(); 
     } 
     catch(Exception) 
     { 
     /* consumed disposal error */ 
     } 
    } 
    } 
} 
+0

Aber wir können die Komponente nicht zum WPF-Formular hinzufügen, also wie implementieren wir backgroundWorker1_DoWork() und backgroundWorker1_RunWorkerCompleted()? –

+1

können Sie einfach die Ereignisse im Code registrieren, z. bgw.DoWork + = new System.ComponentModel.DoWorkEventHandler (bgw_DoWork); und eine Methode private void DoWorkEventHandler (Objekt Absender, DoWorkEventArgs e) {...} – eFloh

+0

Ihr Code unten scheint genau zu verwenden, was ich oben skizziert, in diesem Fall könnten Sie mir einen gewissen Ruf mit den Abstimmknöpfen verbringen, bitte? ;) – eFloh

0

Ich würde versuchen, die Toolboxelemente zurückzusetzen. Verwenden Sie dann den Dialog Element hinzufügen, um etwas zurückzusetzen, das Sie benötigen.