Tworzę aplikację typu Formularz systemu Windows, który dynamicznie tworzy formanty na podstawie danych pobranych z bazy danych.VB/C# .net Dynamicznie dodawanie elementów sterujących za pomocą pracownika tła
Mam kod działa świetnie w tle, który ładuje dane z bazy danych i stosuje go do zmiennych, problem, który mam jest, gdy próbuję utworzyć formanty przy użyciu tych danych, pojawia się błąd wielowątkowości (Dodatkowe informacje: operacja Cross wątek nie ważne. dostęp z wątku innego niż wątek został utworzony na)
Używam zdarzenie BackgroundWorker_DoWork i kod, który nie działa to kontrola „flowpanelMenuRules” następuje:
Me.flowpanelMenuRules.Controls.Add(PanelRule(i))
Powyższy kod to prosta pętla przechodząca przez zmienną (która jest pulle d z bazy danych) i zebranie informacji.
Czy ktoś miał jakiekolwiek doświadczenie w bezpiecznym przywoływaniu powyższej linii? Ja po prostu nie może wydawać się zmusić go do pracy na wszystkich :(
Dzięki za pomoc, w razie potrzeby mogę pisać więcej kodu.
Zobacz https://stackoverflow.com/questions/142003/cross-thread-operation-not-valid-control-accessed-from-a-read-other-than-therq=1, aby uzyskać wyjaśnienia na temat poszło źle. –
Kontrolki nie powinny być tworzone na wątku tła. Zostają przypisani do wątku, w którym są stworzeni i powinni być tam tylko wykorzystywani. Powinieneś powołać się na konkretne tworzenie i aktualizację kontrolek, reszta może być wykonana w BGW. –