Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Pochopení fungovaní statické třídy

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Neaktivní uživatel:13.12.2017 12:09

Ahoj, chtěl bych se jen zeptat zda jsem správně pochopil fungování jednoho kusu kódu na, který sem narazil na Stack Overflow a tak trochu si nejsem jistý jak vlastně funguje...

public partial class SplashForm : Form
    {
        private static Thread _splashThread;
        private static SplashForm _splashForm;

        public SplashForm()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Otevři splash
        /// </summary>
        public static void ShowSplash()
        {
            if (_splashThread == null)
            {
                // Zobraz form v novém thredu
                _splashThread = new Thread(new ThreadStart(DoShowSplash));
                _splashThread.IsBackground = true;
                _splashThread.Start();
            }
        }

        // Voláno threadem
        private static void DoShowSplash()
        {
            if (_splashForm == null)
                _splashForm = new SplashForm();

            // - na novém threadu zavolej form
            Application.Run(_splashForm);
        }

        /// <summary>
        /// Zavři splash
        /// </summary>
        public static void CloseSplash()
        {
            // Musíme zavolat thread
            if (_splashForm.InvokeRequired)
                _splashForm.Invoke(new MethodInvoker(CloseSplash));

            else
                Application.ExitThread();
        }

Jestli jsem kód pochopil dobře tak...
Odkudkoliv mohu zavolat metodu ShowSplash( ). Ta za předpokladu, že _splashThread není null vytvoří nový thread, na kterém volám metodu DoShowSplash( ). Tato metoda vloží do _splashForm referenci na SplashForm, který je už od začátku v heapu a zobrazí formulář - jen na jiném threadu.
Tedy přidaná hodnota tohoto kódu je, že splashform poběží na jiném threadu.

Odpovědět
13.12.2017 12:09
Neaktivní uživatelský účet
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 1 zpráv z 1.