2022년 2월 5일 토요일

(동영상)C#으로만드는 윈폼, 로또번호 생성기 C# 멀티 쓰레드, 델리게이트, 자바학원, C#학원, 닷넷학원, WPF학원, C#동영상, 자바동영상

 (동영상)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 


(동영상)C#으로만드는 윈폼, 로또번호 생성기 C# 멀티 쓰레드, 델리게이트

(동영상)C#으로만드는 윈폼, 로또번호 생성기 C# 멀티 쓰레드, 델리게이트윈폼, 로또번호 생성기C# 멀티 쓰레드, 델리게이트VS 2022로또 번호를 만드는 예제를 멀티쓰레드, 윈폼으로 만들어 보자.예

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();
            }
        }
    }
}




#로또번호생성기, #로또번호, #닷넷로또번호, #윈폼로또, #윈폼로또번호, #시샵동영상, #시샵학원, #시샵교육, #닷넷교육, #닷넷학원, 로또번호생성기, #로또번호, 닷넷로또번호, 윈폼로또, 윈폼로또번호, 시샵동영상, 시샵학원, 시샵교육, 닷넷교육, 닷넷학원, 

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...