Я написал класс, который заполняет дерево. В моем проекте мне нужно это древовидное представление несколько раз, и я не хочу копировать, вставлять свой код, поэтому я решил создать класс, который заполнит древовидное представление для меня.
В некоторых формах я хочу использовать поток для заполнения дерева. Это потому, что иногда загрузка данных и заполнение дерева может занять некоторое время.
В моем классе дерева я передаю дерево в конструкторе. На данный момент я хочу заполнить дерево, я вызываю метод LoadTreeview()
.
Я хотел бы вызвать метод LoadTreeview
в потоке, но когда я делаю это, я получаю исключение, что представление дерева создается в другом потоке. Что логично, конечно. Но мне было интересно, как лучше создать собственный класс, который работает с элементами управления, и вы хотите использовать этот класс в потоке?
Нужно ли писать этот код на каждом «GUI-действии»?
treeview.Invoke((MethodInvoker)delegate
{
treeview.Nodes.Add(MyNode);
})
Или есть другие (более умные) способы?