Avatar billede jarret Nybegynder
26. februar 2006 - 22:54 Der er 11 kommentarer og
2 løsninger

hvad betyder ?

linie 3 - hvad betyder : [STAThread]
linie 9 - hvad betyder : @



class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Connect to the SQL server.
            OleDbConnection c = new OleDbConnection(
                @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Customers.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");

            // Create a dataset.
            System.Data.DataSet ds = new System.Data.DataSet("My Customers");

            // Create a data adapter to talk to the data source.
            OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", c);

            // Open the connection
            c.Open();
Avatar billede Slettet bruger
26. februar 2006 - 23:00 #1
STAThread betyder vist at det er en statisk metode (tråd i denne sammenhæng), hvilket betyder at der kun kan være én instans ad gangen - altså at alle kald til metoden foretages til den samme instans af objektet.

@ er jeg en smule i tvivl om.
Avatar billede nielle Nybegynder
26. februar 2006 - 23:05 #2
@ betyder at man ikke behøver at escape sine \-tegn - dvs at man kan skrive:

@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Customers.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");

- i stedet for:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Customers.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");
Avatar billede ali.k Nybegynder
26. februar 2006 - 23:06 #3
@ bruger du når du skal angive stiér, f.eks: @"C:/EtBillede.jpg" eller "C://EtBillede.jpg"
Avatar billede ali.k Nybegynder
26. februar 2006 - 23:07 #4
Der blev jeg slået med hele 17 sekunder, Nedtur:(
Avatar billede nielle Nybegynder
26. februar 2006 - 23:08 #5
STAThread betyder - ifølge dokumentationen:

Indicates that the COM threading model for an application is single-threaded apartment (STA).

Hvad det præcist betyder, skal jeg ikke kunne sige, men det har nu ikke helt noget at gøre med at funktionen er statisk.
Avatar billede arne_v Ekspert
27. februar 2006 - 00:52 #6
hvis jeg maa uddybe lidt

uden @:
  \n \r etc. er newline retur etc.
  \\ er \
  \" er "
  linie skift i sourcen ikke tilladt

med @:
  \n \r etc. er bare to printable bogstaver
  \ er \
  "" er "
  linie skift i sourcen er tilladt

jeg tror faktisk (men jeg er ikke COM kyndig) at STAThread er det modsatte
at hver kald til det remote objekt har sin egen instans
Avatar billede Slettet bruger
27. februar 2006 - 10:19 #7
Fra http://www.publicjoe.f9.co.uk/vbnet/vb03f.html

STAThread stands for Single Threaded Appartment Thread. This means in the process (application), there is only one thread which will accomplish all of the tasks for the process.

Jeg ved ikke hvorfor du snakker remote objekter ArneV, men hvis det er som i JAVA, ER det en statisk metode, hvor alle kald indenfor application scope kalder den samme metode og hvor der kun kan være én instans af objektet indenfor samme proces.
Avatar billede nielle Nybegynder
27. februar 2006 - 11:35 #8
Nu er Main-metoden jo allerede erklæret static og at tilføje attributten [STAThread] ændre ikke på dette. I dette tilfælde kan attributten oven i købet fjernes, uden at det gør nogen som helst forskel; Der er nemlig ikke noget COM involveret.

Formålet med [STAThread] kommer først i spil, hvis at programmet skal eksponeres igennem et D/COM interface, eller at det selv skal bruge D/COM objekter. Det er dog ikke tilfældet her, og der er det sjældent for de programmer som folk laver med VS2003 (jeg gætter på at det også er derfor at man har fjernet det fra templaten til VS2005).

Jeg ville nok være forsigtigt med at sammenligne med java på lige netop dette punkt – så vidt jeg ved er det ikke så tit at man benytter COM-objekter fra java-programmer (men det er måske min viden om java-verdenen som er for begrænset?).
Avatar billede arne_v Ekspert
27. februar 2006 - 14:14 #9
jeg snakker remote objekter fordi jeg antog at den attribut kun er relevant
ved ikke-inproc COM invocations

det har intet med java static at goere - det hedder ogsaa static i C#

singlethreaded betyder netop at der oprettes flere instanser, fordi hver instans
kun kan servicere 1 thead

saa hvis du leder efter en Java ekvivalent saa er det snarere servlet
implements SingleThreadModel

der er en arikel her http://www.codeproject.com/com/CCOMThread.asp som
gaar lidt i dybden

hvis jeg laser den korrekt saa kan det faktisk vaere relevant for inproc COM
ogsaa bare det er multithreaded
Avatar billede nielle Nybegynder
06. marts 2006 - 18:31 #10
jarret> Hvad med noget respons her?
Avatar billede jarret Nybegynder
15. marts 2006 - 22:44 #11
sorry havde glemt den...smid et svar....
Avatar billede nielle Nybegynder
15. marts 2006 - 23:00 #12
Hvem vil du gerne have svar af?
Avatar billede nielle Nybegynder
18. april 2006 - 20:45 #13
Svar...
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