-
[VB.NET] 스레드(Thread) 예제 및 대리자(Delegate) 사용예제프로그램 소스/VB.NET 2021. 1. 10. 18:28반응형
예제1) 스레드를 사용하여 현재시간을 Label에 표시하는 예제입니다^^
※ 주요 체크 포인트
- 시간을 표시할때 스레드에서 직접 label의 text에 값을 표시할 경우 에러
- 자신이 생성 한 스레드가 아닐경우 오류가 나며, 해결방법은 대리자(Delegate)를 사용하여 값을 표시
쉽게 기억하는 방법은. 스레드는 개별적인 프로그램으로 통로를 통해서 메인 프로그램에 값을 전달한다. 라고 기억하시면 좋을꺼 같습니다^^ (
자신의 프로그램이아닌 다른 프로그램은 마음대로 핸드링 할 수 없으니;;)■ 예제소스
Imports System.Threading Public Class Form1 Delegate Sub delegate_Text(ByVal str As String) //대리자 Dim TH_스레드 As Thread Dim 스레드상태 As Boolean Private Sub Form1_Disposed(sender As Object, e As EventArgs) Handles Me.Disposed If TH_스레드.IsAlive Then TH_스레드.Abort() End If End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub Private Sub B_시작_Click(sender As Object, e As EventArgs) Handles B_시작.Click If 스레드상태 = False Then //스레드 시작 TH_스레드 = New Thread(AddressOf 스레드) 스레드상태 = True TH_스레드.IsBackground = True TH_스레드.Start() B_시작.Text = "종료" Else //스레드 종료 TH_스레드.Abort() 스레드상태 = False B_시작.Text = "시작" End If End Sub Private Sub 스레드() Do While 스레드상태 Set_Text() //현재시간 대리자통해 UI에 표시 Thread.Sleep(900) Loop End Sub Public Sub Set_Text() Dim 현재시간 As String 현재시간 = Now If L_시간.InvokeRequired Then //InvokeRequired 값이 True일 경우 자신이 생성한 스레드가 아님. L_시간.Invoke(New delegate_Text(AddressOf Set_Text), New Object() {현재시간}) Else L_시간.Text = 현재시간 End If End Sub End Class
반응형'프로그램 소스 > VB.NET' 카테고리의 다른 글
[VB.NET]모니터 전원 끄기/켜기 예제소스 (0) 2022.08.13 [VB.NET] 인터넷시간 가져오기 예제 소스 (0) 2021.01.12 [VB.NET] 매개 변수가 잘못되었습니다. 오류해결 (0) 2021.01.04 [VB.NET] 화면에 격자 표시하기 예제 및 프로그램 (0) 2020.12.24 [VB.NET] MYSQL 데이터베이스 연결 및 Select, Insert하기 (0) 2020.12.21