(동영상)C#으로만드는 윈폼, 로또번호 생성기 C# 멀티 쓰레드, 델리게이트, 자바학원, C#학원, 닷넷학원, WPF학원, C#동영상, 자바동영상
https://www.youtube.com/watch?v=m7Q9fwhXg8w&list=PLxU-iZCqT52CtVOhmaR6Nd-65M163g9u-&index=1

https://www.youtube.com/watch?v=Z_ZVVAxyXuo&list=PLxU-iZCqT52CtVOhmaR6Nd-65M163g9u-&index=2

http://ojc.asia/bbs/board.php?bo_table=LecCsharp&wr_id=415
ojc.asia

윈폼, 로또번호 생성기
C# 멀티 쓰레드, 델리게이트
VS 2022
로또 번호를 만드는 예제를 멀티쓰레드, 윈폼으로 만들어 보자.
예제는 숫자 중복에 대한 처리는 안되어 있으니 필요하다면 추가하도록 하자.

namespace Lotto { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Random r = new Random(); private void button1_Click(object sender, EventArgs e) { Thread t1 = new Thread(() => GetNum(textBox1)); t1.Start(); Thread t2 = new Thread(() => GetNum(textBox2)); t2.Start(); Thread t3 = new Thread(() => GetNum(textBox3)); t3.Start(); Thread t4 = new Thread(() => GetNum(textBox4)); t4.Start(); Thread t5 = new Thread(() => GetNum(textBox5)); t5.Start(); Thread t6 = new Thread(() => GetNum(textBox6)); t6.Start(); } private void GetNum(TextBox t) { int n = r.Next(1, 46); SetTextBox(t, n); } //----------------------------------------------------------------------------------------------------------- //TextBox같은 컨트롤은 기본적으로 UI 컨트롤을 생성한 쓰레드만이 글을 쓸수있다. //C#쓰레드는 UI컨트롤을 만드는 UI스레드와 기타 Worker 스레드가 존재 //UI스레드는 UI만 처리하기 위한 스레드이며 모든 화면을 가진 프로그램은 공통적으로 있음 //TextBox는 UI쓰레드만이 접근해서 글을 쓸수있다. //다른 스레드에서 UI에 접근 시에는 크로스 쓰레드 예외가 발생하는데,InvokeRequired를 사용하여 //현재 진입한 스레드가 UI Thread인지 체크 한 후 UI 처리를 해야 문제가 없다. //----------------------------------------------------------------------------------------------------------- public delegate void SetTextBoxDelegate(TextBox t, int n); public void SetTextBox(TextBox t, int n) { //t.InvokeRequired가 True를 반환하면 // Invoke 메소드 호출을 필요로 하는 상태고 즉 현재 스레드가 UI스레드가 아님 // 이때 Invoke를 시키면 UI스레드가 델리게이트에 설정된 메소드를 실행해준다. // False를 반환하면 컨트롤에 직접 접근해도 문제가 없는 상태다. if (t.InvokeRequired) { SetTextBoxDelegate d = new SetTextBoxDelegate(SetTextBox); //델리게이트를 통해 SetText를 실행하는 것은 TextBox를 생성한 UI스레드 this.Invoke(d, new object[] { t, n }); //Invoke((Action<TextBox, int>)SetTextBox, t, n); } else { t.Text = n.ToString(); } } } } |
#로또번호생성기, #로또번호, #닷넷로또번호, #윈폼로또, #윈폼로또번호, #시샵동영상, #시샵학원, #시샵교육, #닷넷교육, #닷넷학원, 로또번호생성기, #로또번호, 닷넷로또번호, 윈폼로또, 윈폼로또번호, 시샵동영상, 시샵학원, 시샵교육, 닷넷교육, 닷넷학원,
댓글 없음:
댓글 쓰기