Problem mit einzelnen Threads

8

Von meinem Hauptformular aus rufe ich folgendes auf, um ein neues Formular zu öffnen:

%Vor%

Alles funktioniert gut, aber dieses Formular hat eine Combobox, die, wenn ich den AutoCompleteMode zum Vorschlagen und Anfügen ändere, ich diese Ausnahme bekommen habe, während ich das Formular gezeigt habe:

Der aktuelle Thread muss auf den Single Thread Apartment (STA) -Modus eingestellt werden, bevor OLE-Aufrufe durchgeführt werden können. Stellen Sie sicher, dass die Hauptfunktion STAThreadAttribute enthält.

Ich habe dieses Attribut für meine Hauptfunktion wie von der Ausnahme angefordert festgelegt:

%Vor%

Kann ich bitte Hilfe bekommen, um zu verstehen, was falsch ist?

Beispielcode:

%Vor%

Designer:

%Vor%

Einstellen der Datenquelle

%Vor%     
santBart 27.11.2012, 08:56
quelle

3 Antworten

3

Ist Main(string[] args) wirklich Ihr Einstiegspunkt?

Vielleicht haben Sie eine andere Main () Überladung ohne Parameter. Oder ein anderes Main () in einer anderen Klasse. Bitte öffnen Sie die Projekteigenschaften und suchen Sie nach dem Startobjekt.

    
Jürgen Steinblock 30.11.2012, 11:55
quelle
2

Windows Forms-Anwendungen müssen in der STA-Methode ausgeführt werden.

Siehe hier: Können Sie STA und MTA erklären?

>

Und COM kommt ins Spiel, da Windows-Formulare ins Spiel kommen, da die Steuerelemente selbst native Windows-Handles verwenden und somit dem STA-Modell entsprechen müssen. Ich glaube, dass der Grund, warum Sie den Fehler an dieser bestimmten Stelle erhalten, darin besteht, dass ein zweiter Thread intern von AutoCompletion erstellt / verwendet wird.

Und soweit ich erfahren habe, muss das Threading-Modell in Main eingestellt werden, das Ändern später funktioniert nur von STA zu MTA, aber nicht umgekehrt

    
Mario The Spoon 30.11.2012 11:32
quelle
1

Als wilder Gedanke: Erstellen Sie eine tiefe Kopie Ihrer Quellenliste in Ihrer zweiten Form und binden Sie die Combobox an die Kopie der Liste und nicht an das Original.

    
b0rg 30.11.2012 10:47
quelle