본문 바로가기
카테고리 없음

[C#] async await 예제 코드 (+ 동기 비동기의 개념)

by 창용이랑 2023. 5. 12.
728x90

 

[C#] async await 기초 #1 : 동기 비동기 개념 이해하기

https://kangworld.tistory.com/24

 

[C#] async await 예제 코드 #2 (+ 동기 비동기의 개념)

https://kangworld.tistory.com/25

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //async는 await 키워드를 메서드 내에 사용할 수 있게 만들어준다를 기억
        //async메서드는 반드시 void 또는 Task 또는 Task<T>를 반환해야 한다.
        public static async void MyAsyncFunc()
        {                    

            for (int i = 0; i < 500; i++)
            {
                //1만개되는 데이터를 가져와
                Console.WriteLine(i+"개 데이터 가져오는중");


                await Task.Delay(1);                                    //Task.Delay(5000)는 내부적으로 타이머를 사용하며 타이머는 스레드 풀의 큐에 들어가게 된다. 
                                                                        //이후 await에 의해 작업의 흐름이 MyAsyncFunc를 호출한 호출자 스레드에게 넘어간다.
            }
            

            Console.WriteLine("데이터 1만개 다 가져왔어");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Console.WriteLine("작업시작");
            MyAsyncFunc();
            Console.WriteLine("다른작업중..");
            Console.Read();
        }
    }

출력>

 

작업시작
0개 데이터 가져오는중
다른작업중..
1개 데이터 가져오는중
2개 데이터 가져오는중
3개 데이터 가져오는중

...

498개 데이터 가져오는중
499개 데이터 가져오는중
데이터 1만개 다 가져왔어