나는 나를 위해 treeview를 채우는 클래스를 작성했습니다. 내 프로젝트에서 나는이 트리 뷰가 여러 번 필요하고 나는 코드를 복사하여 붙여 넣기를 원한다. 그래서 나는 treeview를 채우는 클래스를 만들기로 결정했다.C# 컨트롤과 함께 작동하고 스레딩을 사용하는 클래스를 구현하는 방법은 무엇입니까?
일부 폼에서는 스레드를 사용하여 treeview를 채 웁니다. 이것은 때로는 데이터를로드하고 트리 뷰를 채우는 데 약간의 시간이 걸리기 때문입니다.
내 treeview 클래스에서 나는 생성자에서 treeview를 전달합니다. 내가 트리 뷰를 채우고 싶을 때 나는 LoadTreeview()
메서드를 호출합니다.
스레드에서 LoadTreeview
메서드를 호출하고 싶습니다.하지만 이렇게하면 다른 스레드에서 트리 뷰가 만들어지는 예외가 발생합니다. 물론 논리가 아닙니다. 하지만 궁금 해서요, 컨트롤과 함께 작동하는 사용자 정의 클래스를 만드는 가장 좋은 방법은 무엇이며 스레드에서이 클래스를 사용 하시겠습니까?
'GUI 작업'마다이 코드를 작성해야합니까?
treeview.Invoke((MethodInvoker)delegate
{
treeview.Nodes.Add(MyNode);
})
다른 (더 똑똑한) 방법이 있습니까?
당신은 invoke 컨트롤을 통해 노드를 추가해서는 안된다. TreeView를 호출하고 스레드에 노드를 추가합니다. 그런 다음 트리 뷰를 속성으로 설정하고 다른 클래스에서 필요에 따라 invoke를 통해 가져옵니다. –
그럼 이해해 주시면 감사하겠습니다. 먼저 모든 데이터를 별도의 스레드에로드하고 해당 데이터가 있으면 트리 뷰 (UI 스레드에서)에 노드를 생성하십시오. – Martijn
@Martijn : 그게 내가하는 방법이야. 물론 다른 솔루션도 유효합니다. 당신이 가장 편하게 느끼고 성능을 살펴보십시오. –