안녕하세요, 스레드를 실행하고 프로세스에서 UI를 업데이트하는 프로그램이 있습니다. .invokrequired를 안전한 스레딩에 사용했으며 모든 것이 정상적으로 실행되었습니다. 스레드 중 하나에서 다른 스레드 (ListBox2.Items(index))
만든 목록 상자에서 항목의 값을 사용해야합니다 그리고 난 dim item1 as integer =ListBox2.Items(index)
함께 현재 일하고 있어요. 이제는 프로그램이 잘 실행되고 예외 나 오류 메시지가 표시되지 않지만 같은 줄의 시계를 추가하면 다음과 같은 메시지가 표시됩니다. + AccessibilityObject { "크로스 스레드 작업이 유효하지 않습니다. Control 'ListBox2' 생성 된 스레드보다. "} System.InvalidOperationException. 스레드에서 안전하게 목록 상자 항목 값 받기
0
A
답변
0
크로스 스레드 예외에 대한 질문에 대답하기 위해서는 정상적인 현상이며 사용자가 만든 스레드와 다른 스레드의 UI 요소에 액세스 할 수 없습니다. 이 문제를 해결하려면 control.invoke()를 사용하여 목록 상자를 만든 스레드에서 액세스 코드를 실행하는 람다 식을 실행해야합니다.
Dim item1 as Integer
If ListBox2.InvokeRequired then
Listbox2.Invoke(Sub() Item1 = ListBox2.Items(Index))
Else
Item1 = ListBox2.Items(Index)
End If
관련 문제
- 1. 목록 상자 항목 값 업데이트
- 2. 색인으로 목록 항목 받기
- 3. jQuery 항목 값 받기
- 4. 목록 상자 항목 오버플로
- 5. 목록 상자 항목 삭제
- 6. 목록 상자 항목 인쇄
- 7. 목록 상자 항목 동적로드
- 8. WPF 목록 상자 항목
- 9. 목록 상자 선택한 항목
- 10. 다른 양식으로 표시 할 목록 상자 항목 받기
- 11. Silverlight Webpart 목록 항목 받기
- 12. wpf : 콤보 상자 값 받기
- 13. 보조 스레드에서 드롭 다운 목록 선택 받기
- 14. webservice의 목록 상자 값
- 15. 빈 목록 상자 값
- 16. 데이터베이스의 목록 상자 값
- 17. 항목 추가 중 목록 상자 항목 고정
- 18. 목록 상자 드래그 앤 드롭 항목, 항목
- 19. 목록 상자 항목 및 선택한 항목
- 20. WP7 : 스타일 목록 상자 항목
- 21. WPF - 목록 상자 항목 숨기기
- 22. 목록 상자 선택 항목 확장
- 23. C# 목록 상자 항목 선택
- 24. WPF 목록 상자 제거 항목
- 25. 목록 상자 itemtemplate 선택한 항목
- 26. 목록 상자 선택한 항목 winform
- 27. 목록 상자 항목 삭제 기능?
- 28. tkinter 목록 상자 항목 바인딩
- 29. 목록 상자 항목 선택 유지
- 30. 목록 상자 표시되지 않는 항목
대리인을 사용하거나 배경 작업자 만 사용하십시오. – Codexer
자세한 내용은 여기에서 확인할 수 있습니다. http://stackoverflow.com/questions/3969476/how-to-pass-a-variable-to-another-thread – Codexer
위임자를 사용하여 (ListBox2) 값을 가져올 수 없습니다. 항목 (색인)). UI에 어떤 변경도 필요하지 않습니다. ListBox2.Items (인덱스)의 값을 스레드로부터 안전하게 얻고 싶습니다. – user2334436