Liebe Com,
ich für meine Form ein BackgroundWorker, der meine GUI nach und nach Transparent machen soll.Dafür habe ich ihm im Konstruktor der Klasse die nötigen Events angehängt.
C#-Code: |
taskbarWorker = new BackgroundWorker();
taskbarWorker.DoWork += new DoWorkEventHandler(TaskbarDoWork);
taskbarWorker.ProgressChanged += new ProgressChangedEventHandler(TaskbarChanged);
taskbarWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(TaskbarCompleted);
|
Jetzt wartet die GUI darauf, von einer anderen Klasse ein Event zu erhalten.Wenn dieses Event gefeuert wird, wird der Worker gestartet.Er arbeitet sich normal durch, aber wenn er etwas an der GUI verändern soll, kommt eine InvalidOperationException.
Woran könnte das liegen?
Hier der BGW-Code:
C#-Code: |
private void TaskbarDoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
worker.WorkerReportsProgress = true;
for(int _opacity = 100 ; _opacity > 0 ; _opacity--)
{
worker.ReportProgress(_opacity);
System.Threading.Thread.Sleep(100);
}
e.Result = e.Argument;
}
private void TaskbarChanged(object sender, ProgressChangedEventArgs e)
{
Logger.InfoWrite("Changed to {0}", e.ProgressPercentage);
float newOpacity = (float)e.ProgressPercentage;
this.volumeBar.Opacity = newOpacity;
}
private void TaskbarCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Logger.InfoWrite("Completed");
}
|
Danke im voraus... Kooki :-)