그래서 원래 발신자 트리의 부모 호출자가 내 메인 윈도우의로드 기능인 코드 섹션이있었습니다. 이제 내 OS를 다시 시작할 때마다 beginInvoke (Windows 컨트롤이 아직 초기화되지 않았고 참조하려고 시도 함) 오류가 발생했습니다. 많은 사람들이 무언가가로드되면 부울을 추가하기 위해 이벤트를 표시된 이벤트로 이동 시키겠다는 제안을했으나 결코 문제를 제거하지 못했습니다. 내가 머리카락을 꺼낼 때부터 멀티 스레딩을 제거했다.호출시 스레딩 확인
'send broadcast on network
Dim tasksArr(1) As Task
Dim brand1SearchTask= Task(Of List(Of device)).Factory.StartNew(Function() getbrand1())
Dim brand2SearchTask= Task(Of List(Of device)).Factory.StartNew(Function() getbrand2())
Try
tasksArr(0) = brand1SearchTask
tasksArr(1) = brand2SearchTask
Task.WaitAll(tasksArr)
Catch ex As Exception
End Try
Try
Try
deviceList.AddRange(brand1SearchTask.Result())
Catch ex As Exception
End Try
deviceList.AddRange(brand2SearchTask.Result())
Catch ex As Exception
End Try
이 코드는 NetworkSearch.FindDevices()라는 별개의 클래스에있는 함수 내에 있습니다. MainWindow_Load의 load 함수에서 호출됩니다.
그래서 내가 배운 것을 주된 문제는 작업 .start 또는 호출을 호출합니다 .Invoke, 그리고 내 양식이 그 시간에 초기화되지 않은 경우 Windows에서 불평합니다. 내가 가진 한 가지 해결책은 별도의 모듈을 만든 다음 내 주 창의 New() 양식을 만드는 것입니다. 오류가 제거되었지만 버튼을 클릭하여 다른 양식을 실행하는 등의 다른 창은 초기화되지 않았고 null 예외가 발생했습니다.
내 질문 : 아직 작업 또는 스레딩 환경에서 초기화 된 다음 내 스레드에 들어가기를 기다리는 좋은 방법은 무엇입니까? 이 컨트롤에 대한 대리자 함수를 만들고 편집 할 수 있지만 여기에 정말 직접 GUI를 건드리지 않습니다.
모듈을 만들어 주려면, 그것에서 새로운() 기본 양식을 만들고,하지만 내 양식의 나머지
이사를 거기에서 발사 할 때 아무것도 객체되지 않았다 : 나는 시도 무엇
주 양식에 표시됨 (여전히 호출 오류가 시작됨)
- 개인 하위 My_application 시작시 My.Settings.Loadfinished 부울을 사용하여 me.startup을 처리하고 제거하지 않았습니다.
걸러은이 말을 필요한 만 런타임에 불평 확인 "mainwindow.invokerequired" "나"대신