Csharp(17)
-
[C#] 멀티스레드를 이용하여 레이스 프로그램을 만들어보자
안녕하세요. 진득코딩입니다. 이번 시간에는 저번 시간에 살펴본 멀티 스레드의 불확실성을 이용한 레이스 프로그램을 만드는 실습을 해보도록 하겠습니다.더보기멀티스레드 레이스요구사항1. 총 5명의 참가자가 차량을 가지고 있습니다.2. 각 차량은 랜덤한 시간 간격으로 한 단위 움직입니다. 이 시간 간격은 0.1초에서 1초 사이로 설정합니다.3. 차량이 결승선에 도달하면 해당 참가자의 이름과 완료 시간을 출력합니다.4. 모든 차량이 결승선에 도달하면 레이스를 종료합니다. 위와 같은 요구사항을 바탕으로 멀티스레드의 기본 개념과 C#의 스레드 관리 방법에 대해서 연습해보도록 하겠습니다.시연 프로그램을 실행하게 되면 위와 같은 화면이 나오게 됩니다. 왼쪽에 레이스 시작 버튼이 있고 오른쪽에는 큰 textBox가 위치해..
2024.07.26 -
[C#] 멀티 스레드에 대해서 알아보자
안녕하세요. 진득 코딩입니다. 이번 시간에는 많은 개발을 배우시는 분들을 좌절시키고 필자 또한 좌절하고 있는 멀티 스레드에 대해서 살펴보도록 하겠습니다. 멀티 스레드에 대해서 살펴보기 전에 스레드에 대해서 먼저 살펴보도록 하겠습니다. 스레드는 CPU가 일하는 단위의 최소 단위로서 하나의 프로세스가 최소 하나의 스레드를 가지게 되며 하나의 프로세스가 여러 개의 스레드를 갖는 것이 가능합니다. 프로세스 안에는 기본적으로 Heap, static, code 영역이 있으며 각각의 스레드는 registers와 stack을 가지고 있습니다. 스레드는 싱글 스레드와 멀티 스레드로 구분되는데 싱글 스레드는 순차 실행하는 반면에 멀티 스레드는 여러 스레드가 병렬 실행하는 특징을 가지고 있습니다. 하나의 프로세스에서 여러 ..
2024.07.26 -
[C#] 제네릭 컬렉션으로 빠르고 안정적이게 데이터를 다뤄보자
안녕하세요. 진득코딩입니다. 이번 시간에는 저번 시간에 이어서 컬렉션 중에서도 안정적이고 빠른 제네릭 컬렉션에 대해서 살펴보도록 하겠습니다.제네릭 컬렉션 제네릭 컬렉션은 컬렉션과 달리 타입을 선택하여 그 타입만 추가가 가능합니다. 하지만 안정적이고 속도면에서 유리한 컬렉션입니다. 제네릭 컬렉션은 그냥 컬렉션과 달리 (제네릭)을 사용합니다.스택과 리스트stack은 전에 살펴보았던 컬렉션 stack과 기능면에서 유사하지만 식에 제네릭이 포함된 것을 확인할 수 있습니다. 또한 제네릭 stack보다는 좀 더 안정적으로 사용할 수 있습니다. list는 평소에 사용하던대로 선언하고 초기화하여 사용하면 되는데 list도 제네릭 컬렉션이구나 라는 것을 확인하고 넘어가면 됩니다.열거형 열거형은 var에 추가하여 Rang..
2024.07.26 -
[C#] Thread 이벤트로 구현한 코드 분석해보기
안녕하세요. 진득 코딩입니다. 개발을 하면서 직접 개발하는 것도 어렵지만 다른 사람의 코드를 해석하는 것도 굉장히 어려웠던 기억이 있습니다. 이번 시간에는 다른 사람이 구현한 코드를 분석해보는 시간을 가져보도록 하겠습니다.실행해보기 해당 코드를 실행해보면 먼저 Form1이 나오게 됩니다. 그리고 player 수를 설정할 수있고 시작 버튼도 보실 수 있습니다. 이러한 텍스트와 버튼 밑에는 textBox를 보실 수있습니다. 필자는 player 수를 3으로 지정하였습니다. 시작 버튼을 누르게 되면 오른쪽에 플레이어의 수만큼 바가 생기게 되고 각각의 쓰레드가 실행되는 것을 확인하실 수 있습니다. 실행이 끝난 스레드는 textBox에 플레이어 이름과 함께 완주를 했다고 문구가 나오게 됩니다.솔루션 탐색기 살펴보기..
2024.07.23 -
[C#] 오버 로딩과 오버 라이딩에 대해 알아보자
안녕하세요. 진득 코딩입니다. 이번 시간에는 심화 문법 두 번째 시간으로 오버 로딩과 오버 라이딩에 대해서 살펴보도록 하겠습니다.오버 로딩 메소드의 오버로드를 사용하여 같은 이름의 메소드를 사용할 수 있습니다. 단 각각의 메소드의 구분을 위해서 변수의 종류나 수는 달라야합니다. 이렇게 비슷한 기능을 같은 이름으로 구현하여 가독성을 높일 수 있습니다. 실습 예제를 보시면 같은 setCombatPoint 메서드에 바뀌는 변수의 수에 따라서 같은 이름의 다른 메서드들을 만들었습니다.오버라이드 메소드 오버라이드는 상속일 때 사용할 수 있습니다. 위와 같이 shape에서는 say()라는 메서드가 Hi를 출력하지만 Square에서는 say()라는 메서드가 Hello를 출력합니다. 그래서 square.say()는 H..
2024.07.17 -
[C#] 좀 더 심화된 C# 문법을 알아보자
안녕하세요. 진득코딩입니다. 저번 시간까지 간단한 C# 문법을 이용하여 간단한 계산기를 만들어보았습니다. 이번 시간에는 조금 더 심화된 C# 문법들에 대해서 살펴보도록 하겠습니다.구조체 앞선 기초 문법에서도 살펴봤던 구조체입니다. 구조체를 이용하여 여러 변수들을 모아서 사용할 수 있습니다. 사용할 때에는 new를 사용하여 p로 생성했다면 p.x, p.y, p.z와 같이 표현하여 사용할 수 있습니다. 똑같이 구조체를 만들고 배열로 선언할 수도 있습니다. new를 할 때 배열로 선언하고 사용할 때에는 p[i].x, p[i].y, p[i].z와 같이 사용하실 수 있습니다.화살표 함수 화살표 함수는 Arrow Function이라고도 하고 주로 한줄짜리 함수같은 간단한 함수에서 많이 사용됩니다. 원래의 함수에서..
2024.07.16