Avatar billede herman01753 Nybegynder
13. august 2008 - 20:50 Der er 2 kommentarer

main tråd får ikke STA selvom main har [STAThread]

Jeg har et Windows applikation som udvikles i C# VS2005, med .NET 2.0. I applikationen er der en form som bruger drag-n-drop, hvorfor det er nødvendigt at applikationen kører i Single threaded apartement (STA).

Hvis jeg skriver [STAThread] foran deklarationen af min main metode, ville jeg forvente at Thread.CurrentThread.ApartmentState ville vise STA. Den viser mod al forventning at tråden kører i MTA.

Jeg forsøgte at manipulere trådens Apartment type ved at kalde
Thread.CurrentThread.SetApartmentState(ApartmentState.STA);
Den kaster dog en InvalidoperationException, med texten "Failed to set the specified COM apartment state."

Hvis jeg laver et helt ny projekt, med en main metode i, så kan jeg se at jeg ved et breakpoint i første linje i min main metode har STA som apartmentstate for Thread.CurrenThread.

Jeg har oprindeligt oprettet projektet som en dll, men skiftet om til at det er en windows applikation, jeg ved ikke om det har nogen indflydelse. Jeg synes dog ikke jeg kan finde noget om emnet i csproj-filen. Er der nogen der kan hjælpe mig med hvad der kan være galt?

Jeg sidder lidt fast, og kan ikke eksekvere mit program, så derfor det høje pointtal. Jeg håber i kan hjælpe mig hurtigt.
Avatar billede fedora Nybegynder
20. august 2008 - 21:30 #1
Har du prøvet at clean solution og så Build solution? Jeg ved ikke om det hjælper, men det kan være der er gemt noget et sted.
Avatar billede herman01753 Nybegynder
21. august 2008 - 16:25 #2
Jep, Jeg har fundet ud af at der er andre der har problemer med det samme andre stedet på nettet. Det sjove er at hvis jeg kører i DEBUG mode, så er ApartmentState MTA, hvorimod hvis jeg kører uden debugger, og skriver ApartmentState ud, så er det STA.

Jeg tænker lidt over om det kan være Visual studio host processen som gør at den starter op i MTA mode.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester