Hallo zusammen.
In meinem Form1.cs erstelle ich einen Backgroundworker:
C#-Quelltext
1: 2: 3: 4:
| BackgroundWorker BGW = new BackgroundWorker(); BGW.DoWork += new DoWorkEventHandler(BGW_DoWork); BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGW_RunWorkerCompleted); BGW.RunWorkerAsync(str); |
C#-Quelltext
1: 2: 3: 4: 5: 6:
| void BGW_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker bw = sender as BackgroundWorker; string str = e.Argument.ToString(); Angriffsbrowser A = new Angriffsbrowser(str.ToString().Split('#')[0], str.ToString().Split('#')[1], str.ToString().Split('#')[2], str.ToString().Split('#')[3], str.ToString().Split('#')[4], str.ToString().Split('#')[5]); } |
Die Klasse Angriffsbrowser ist eine selbst erstellte Klasse.
Bei der Kopfzeile des Konstruktors wirft mir der Compiler dann eine ThreadStateexception.
Fehlertext:
Zitat: |
Das ActiveX-Steuerelement 8856f961-340a-11d0-a96b-00c04fd705a2 kann nicht instanziiert werden, da der aktuelle Thread kein Singlethread-Apartment ist. |
Diesen Feher hatte ich auch schon früher. Durch etwas Recherche im Internet hab ich dann herausgefunden, dass ich den fehler durch das
[STATHREAD]-Flag verhindern kann, wenn ich es über die Methode setze.
Ich schaffe es allerdings nicht, das flag für eine ganze Klasse zu setzen, und wenn ich es direkt über dem Konstruktor platziere, meldet der Compiler auch einen Fehler, weil der Konstruktor keine normale Methode ist.
Ich frage mich jetzt, wie ich denn die ganze Klasse als SingleThreadApartment setze.
Weiss jemand die Antwort?
Wenn es etwas bringt, hier auch noch die Ausnahmedetails:
Zitat: |
System.Threading.ThreadStateException wurde nicht von Benutzercode behandelt.
Message="Das ActiveX-Steuerelement 8856f961-340a-11d0-a96b-00c04fd705a2 kann nicht instanziiert werden, da der aktuelle Thread kein Singlethread-Apartment ist."
Source="System.Windows.Forms"
StackTrace:
bei System.Windows.Forms.WebBrowserBase..ctor(String clsidString)
bei System.Windows.Forms.WebBrowser..ctor()
bei Timer.Angriffsbrowser..ctor(String _Angriffszzeit, String villageID, String _targetX, String _targetY, String _Units, String _Type) in F:\Tools\Projekte\Ds-Cheat\Ds-Timer\Timer\Timer\Angriffsbrowser.cs:Zeile 25.
bei Timer.Form1.BGW_DoWork(Object sender, DoWorkEventArgs e) in F:\Tools\Projekte\Ds-Cheat\Ds-Timer\Timer\Timer\Form1.cs:Zeile 161.
bei System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
bei System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
InnerException:
|
mit freundlichen Grüssen
mr tobo