Server

드디어 이벤트 부분을 배워서 정리해 보도록 하겠습니다! 내가 알고 있던 이벤트 with LUA LUA 에서는 1) 이벤트 타입을 만들고, 2) 그 이벤트를 Event Invoke 함수를 통해 호출시키고, 3) 이벤트를 감지하는 Event Handler 를 추가하여 이벤트를 발생시켰습니다. 이벤트의 장점 저는 이벤트를 정말 사랑했습니다. 한 번의 호출로 여러 함수를 호출할 수 있었거든요. 저는 코드를 작성할 때 가장 중요한 것이 현실과의 유사성이라고 생각하는데, 이벤트를 사용하면 마치 프로그램과 대화를 하는듯한 코딩이 가능했습니다. 다시말해 아래 그림처럼, 각 Manager Class 들이 내 얘기를 듣고 있는 것처럼 코딩할 수 있었습니다. 이벤트의 단점 하지만 이벤트가 좋다고 이벤트를 남발하면, 코드 속..
· Server/C#
글을 열며 드디어 이벤트 사용법을 알아냈습니다! 저는 LUA언어로 미니게임을 만들며 이벤트를 아주 잘 사용했었습니다. 그때의 좋은 기억 덕분에 C# 개발을 하면서도 "이거 이벤트로 만들면 진짜 딱인데..." 싶은 것들이 나올 때마다 서적을 펼쳐 이벤트 부분을 무작정 읽었습니다. 하지만 앞부분을 읽지 않으면 이벤트를 이해할 수 없었고, 그 앞부분 또한 앞부분의 앞부분을 읽지 않으면 이해하기 난해했습니다. 결국 드디어 서적의 앞부분을 다 읽고 이벤트까지 오게 되었는데, 이걸 설명하려면 델리게이트 정도는 정리하고 넘어가야 할 것 같습니다. 서적에서 왜 바로 이벤트부터 말해주지 않고 델리게이트를 먼저 설명하고 넘어가는지 글 작성자 입장이 되어 보고 나니 이해가 됩니다. 델리게이트란 ? 델리게이트는 함수를 저장하..
· Server/C#
1. Nuget 패키지를 설치한다. 2. NLog.Config 파일을 만들어 줍니다. 아무데나 원하는 곳에 NLog.Config 파일을 만들어 줍니다. 파일 내용은 이렇게 적습니다. 3. 코드 작성 이제 코드를 아래와 같이 작성합니다. path는 위에서 만들어 준 NLog.Config 의 절대 경로를 입력했습니다. 프로세스를 실행하면 로그가 파일에 저장됩니다. public class Program { private static readonly NLog.Logger log = NLog.LogManager.GetCurrentClassLogger(); public static void Main(string[] args) { string path = "/Users/jaeeun/free/TestSolution/N..
세줄요약 - 스레드끼리 지역변수를 매개변수로 전달 가능 - 스레드끼리 변수 하나를 스태틱으로 공유 가능 - 스레드끼리 지역변수 하나를 매개변수로 공유.... 하고싶음 ㅜㅜ 코드를 작성하고 실행하는데, 작업이 오래 걸리기 시작했습니다. 처음 10초 정도는 괜찮았습니다. 15초 후 불안해집니다. 20초가 넘어 가자 뭔가 잘못되어가고 있는 게 아닌지, 내가 이 일로 회사에서 짤리지는 않을지 조마조마해집니다. 저는 이 일이 제대로 돌아가고 있는지 확인해 주는 스레드를 만들기로 했습니다. 그런데 스레드A 의 변수를 스레드B 에서 출력할 수 있을까요? 가능합니다! 1. 스레드 간 값 전달 방식 public static void Main(string[] args) { int count = 1; Thread thre..
· Server/C#
C# 교재를 읽다 깜짝 놀랐습니다. static 생성자라는게 존재했다니! static 생성자란, 클래스의 생성자와 똑같은 형식으로 생겼지만, static 으로 선언되어 정적 맴버들을 초기화할 수 있는 함수입니다. 아래와 같은 방식으로 오버로딩도 가능합니다. class Program { private int num; static Program() { Console.WriteLine("정적 생성자"); } Program() { Console.WriteLine("생성자"); } public static void Main() { Console.WriteLine("Main문 시작"); Program program = new Program(); } } 정적 생성자 Main문 시작 생성자
어떤 스레드의 작업이 끝나야만 다음 작업을 수행하는 스레드가 필요할 때, Join 메서드를 이용해서 해당 스레드의 작업이 끝날 때까지 기다릴 수 있습니다. 사용 예시 public static void Main() { Thread t = new Thread(Wait2Seconds); t.Start(); t.Join(); Console.WriteLine("나 너를 기다렸어"); } static void Wait2Seconds() { Thread.Sleep(2000); Console.WriteLine("업무 끝!"); } 업무 끝! 나 너를 기다렸어 그런데 이 Join 메서드는 스레드 풀을 사용할 때에는 사용할 수 없습니다. 스레드 풀은 스레드 사용이 종료되어도 스레드가 반납되지 않기 때문입니다. 이럴 때에는..
개발자 재은
'Server' 카테고리의 글 목록 (4 Page)