C# Wysyłanie parametrów do nowego Thread

0

Witam.Potrzebuje się kontaktować z nowym Thread'em. Co poprawić w poniższym kodzie żeby śmigało?

       private void LoadFiles()
        {
            LoadingThread = new Thread(new ThreadStart(StartLodingForm));
            LoadingThread.Start();
            if (System.Windows.Forms.Application.OpenForms["LoadingThread"] != null)
            {
                (System.Windows.Forms.Application.OpenForms["LoadingThread"] as LoadingForm).LoadingProcess(2,"ddfsdf");
            }
             
        }
        public void StartLodingForm()
        {
            LoadingForm LoadingForm = new LoadingForm();
            LoadingForm.ShowDialog();

        }
0
 if (System.Windows.Forms.Application.OpenForms["LoadingForm"] != null)
                {
                    (System.Windows.Forms.Application.OpenForms["LoadingForm"] as LoadingForm).LoadingProcess(2, "ddfsdf");
                }

Ok już widze błąd, teraz mam nowy problem error
"Cross-thread operation not valid: Control '_TextBoxLogs' accessed from a thread other than the thread it was created on."

0
 TextBox.CheckForIllegalCrossThreadCalls = false;

Już wsio śmiga.Temat rozwiązany.

1

to nie jest rozwiązanie - to jest obejście i to dość niepewne http://4programmers.net/Forum/C_i_.NET/139741-CheckForIllegalCrossThreadCalls_-_czym_grozi_używanie_tego a to co chcesz zrobić robi się całkiem inaczej

0

A jakie jest to inne rozwiązanie? Z moim zaczynają się już klocki, po zamknięciu tread z oknem logowania odpalam nowy thread z "Menu Form" a tam OpenFileDialog zwiesza całkiem program:(

0

TextBox.CheckForIllegalCrossThreadCalls = false;
Każdym uruchomieniem tego programu zabijasz 10 małych kotków.

A jakie jest to inne rozwiązanie?
InvokeRequired, Invoke. Było wielokrotnie.

po zamknięciu tread z oknem logowania odpalam nowy thread z "Menu Form"
Ale po co tworzysz nowy wątek, tylko po to by otworzyć okno?

0

po zamknięciu tread z oknem logowania odpalam nowy thread z "Menu Form"

Ale po co tworzysz nowy wątek, tylko po to by otworzyć okno?

Bo Klasa z której otwieram nowego forma robi inne funkcje międzyczasie:>

0

wbij sobie raz na zawsze do głowy, że wątek główny jest przede wszystkim do rysowania i sterowania GUI natomiast poboczne wątki są do czasochłonnych obliczeń. Jak tak zaprojektujesz aplikację to nie będziesz miał problemów takich jak ten. Poza tym stworzenie formatki w osobnym wątku wiąże się ze stworzeniem osobnego okna (w sensie okna windowsa, które będzie miało własną kolejkę komunikatów) i jego obsługi.

0

To może mi doradzicie jak to wykonać w mojej sytuacji. Sprawa Wygląda tak(na chłopski rozum): Włączam program, pokazuje się form wczytywania plików(logi z wczytywania + ProcessBar). Pliki mają się wczytać do DataSet ,sprawdzać co jakiś czas czy się nie zmieniły(jeśli tak, ponowny update tabeli do DataSet) i maja być dostępne przez całą sesje aplikacji dla każdego forma pochodnego z menu. Form loadingu po skończonej pracy zamyka się tworząc Forma menu. //Koniec:) Jak to zaprojektować?

1 użytkowników online, w tym zalogowanych: 0, gości: 1