Diskuze: Zaslání argumentu do metody Main()

C# .NET .NET (C# a Visual Basic) Zaslání argumentu do metody Main() American English version English version

Avatar
krepsy3
Redaktor
Avatar
krepsy3:

Ahoj, prosím, potřeboval bych pomoc. Jsem úplný začátečník, nicméně mám malou konzolovou aplikaci, ve které bych chtěl provést vložení stringu do schránky - používám:

using System.Windows.Forms;
//nějaký kód v metodě Main()
Clipboard.SetText("text do schránky");

V momentě, kdy se má metoda vložení do schránky vykonat, program řachne, protože metoda Main() nemá argument STAThreadAttribute.
Nevíte prosím, jak ho poslat metodě přímo ze zdrojáku?
(a btw. nefungovalo mi to ani s použítím batche:

program.exe -STAThreadAttribute

čemuž už definitivně nerozumím.)

Poradíte mi prosím?

Odpovědět 6.10.2015 17:39
Programátor je stroj k převodu kávy na kód.
Avatar
David Hanina
Člen
Avatar
Odpovídá na krepsy3
David Hanina:

Ahoj, před začátek metody main ti stačí přidat tento řádek

[STAThread]

Co tento řádek dělá 100% nevím, ale měl by nějak komunikovat se systémem v tomto případě schránkou..

Editováno 6.10.2015 18:08
 
Nahoru Odpovědět  +2 6.10.2015 18:06
Avatar
Odpovídá na David Hanina
Petr Čech (czubehead):

Značí to, že se jedná o hlavní vlákno a bude se používat na UI.

Nahoru Odpovědět  +1 6.10.2015 18:11
Why so serious? -Joker
Avatar
David Dostal
Redaktor
Avatar
Odpovídá na krepsy3
David Dostal:

Metodě Main musíš přidat atribut STAThread. Atribut není to samé, co argument, zapisuje se do hranatých závorek nad metodu/třídu/vlas­tnost/..., například takto:

[STAThread]
static void Main(string[] args)
{

}

Atributy se používají pro přiřazení dodatečných informací třídě/metodě/... Například v tomto případě atribut STAThread je požadován pro správné fungování některých částí Windows Froms (je vyžadován pro komunikaci s některými systémovými komponentami).

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 6.10.2015 18:11
Avatar
krepsy3
Redaktor
Avatar
krepsy3:

Čili jsem celou dobu googlil špatně "argument"... :DD No, velmi děkuji za rychlé odpovědi ;)
Už i chápu proč mi to nefungovalo v tý dávce a proč mi všechny ty tutoriály přišly nějaký divný... :D A díky za poučení ;)

Nahoru Odpovědět  +1 6.10.2015 19:29
Programátor je stroj k převodu kávy na kód.
Avatar
krepsy3
Redaktor
Avatar
krepsy3:

Rozumím tedy tomu dobře, že ten atribut sdělí windowsům, že program má dostatečná oprávnění na práci s clipboardem?

Nahoru Odpovědět 7.10.2015 17:44
Programátor je stroj k převodu kávy na kód.
Avatar
Odpovídá na krepsy3
Jakub Šárník:

Ne, nesouvisí to s clipboardem ale s vláknama

 
Nahoru Odpovědět  +1 7.10.2015 20:22
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na Jakub Šárník
Milan Křepelka:

Pro tazatele to znamená obojí. Platí, že ke clipboardu lze přistupovat z vlákna které má nastaveno ApartmentState na STA.

 
Nahoru Odpovědět 8.10.2015 10:00
Avatar
krepsy3
Redaktor
Avatar
Nahoru Odpovědět 9.10.2015 9:36
Programátor je stroj k převodu kávy na kód.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.