Red2Devil - So 02.05.10 16:23
Titel: STAThread vs. OpenFileDialog
Hi,
in meiner Server-Client Applikation versuche zum einen eine datei vom lokalen Rechner aus zu laden, wobei ich den OpenFileDialog verwende. das funktioniert auch wunderbar, da es direkt von der Form aus gestartet wird:
C#-Quelltext
1: 2: 3: 4: 5:
| private void bBrowse_Click(object sender, EventArgs e) { tbPath.Text = Model.LFS.openFile(); tbPath.ForeColor = Color.Black; } |
Die "openFile" Funktion ist eine statische Funktion, die den OpenFileDialog öffnet und den String des ausgewählten Pfades zurück gibt. Alles kein prob... Aber:
Nachdem der Client dem Server eine Anfrage und den dateinamen geschickt hat, soll der Server sich den Speicherort wieder mit dem OpenFileDialog aussuchen können. Dieser Funktion inkl Aufruf des OFD findet aber in einem anderen Thread statt.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| internal void incomingData(object clientObject) { Socket clientSocket = (Socket)clientObject; clientSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 60000); byte[] filenameByte = new byte[1024]; clientSocket.Receive(filenameByte); string filename = Encoding.ASCII.GetString(filenameByte); Console.WriteLine("---" + filename + "---"); string filepath = Model.LFS.saveFile(filename); if (filepath != "") { .... } |
Sobald ich zu dieser Stelle komme, kommt immer folgende Fehlermeldung:
"Für den aktuellen Thread muss der STA-Modus (Single Thread Apartment) festgelegt werden, bevor OLE-Aufrufe ausgeführt werden können. Stellen Sie sicher, dass die Hauptfunktion mit STAThreadAttribute gekennzeichnet ist. Diese Ausnahme wird nur ausgelöst, wenn ein Debugger mit dem Prozess verbunden ist."
Aber das [STAThread] Attribut steht bei mir über der Main-Methode von dem Programm und wurde schon von Visual Studio so initialisiert.
Was kann ich nun tun, damit ich den Fehler wegbekomme?
Es scheinen im Internet viele dieses Problem zu haben, aber niemand scheint eine ordentliche Lösung zu kennen.
Ich kann nur darauf schließen, dass es sich um Thread Problem handelt :(
Hoffe mir kann jemand helfen
Danke schonmal =)
Grüße