본문 바로가기

프로그래밍/C#33

전처리기. c#의 전처리기 지시문은 특정 소스코드를 상황에 따라 컴파일 과정에서 추가/제거 하고 싶을때 사용한다.하나의 코드로 조건을 걸어 여러개의 상황을 만족하는 코드를 작성할때 유용하다. 아래처럼 #if /#endif 를 사용하여 컴파일 조건을 걸 수 있다. using System;using System.Threading;using System.Collections.Generic;using static System.Net.Mime.MediaTypeNames;namespace csharp_study{ class Program { static void Main(string[] args) { string txt = Console.ReadLine(); if (string.IsNullOrEmpty(txt) == fals.. 2017. 8. 13.
c# ThreadPool 사용 .NET의 Thread 클래스를 이용하여 쓰레드를 하나씩 만들어 사용하는 것이 아니라, 이미 존재하는 쓰레드 풀에서 사용 가능한 작업 쓰레드를 할당 받아 사용하는 방식이 있는데, 이는 다수의 쓰레드를 계속 만들어 사용하는 것보다 효율적이다.이렇게 시스템에 존재하는 쓰레드풀에 있는 쓰레드를 사용하기 위해서는 (1) ThreadPool 클래스, (2) 비동기 델리게이트(Asynchronous delegate), (3) .NET 4 Task 클래스, (4) .NET 4 Task 클래스, (5)BackgrouondWorker 클래스등을 사용할 수 있다. 이 중 ThreadPool 클래스의 경우, ThreadPool.QueueUserWorkItem()를 사용하여 실행하고자 하는 메서드 델리게이트를 지정하면 시스템.. 2017. 6. 26.
C# Mutex 동기화 코드 프로그램 종료시 해당 경로에 있는 프로그램 실행하면서 계속 하나의 뮤텍스를 공유해서 사용하는 코드. using System;using System.Threading;using System.Collections.Generic;using static System.Net.Mime.MediaTypeNames; namespace csharp_study{ class Program { public static Mutex mtx = null; static void Run() { Console.WriteLine("Start program"); bool bRun = true; string cmd = ""; while (bRun) { //x 입력시 종료 cmd = Console.ReadLine(); if (cmd.Equal.. 2017. 6. 21.
C# Thread 2 C# Thread 클래스 파라미터 전달 Thread 클래스는 파라미터를 전달하지 않는 ThreadStart 델리게이트와 파라미터를 직접 전달하는 ParameterizedThreadStart 델리게이트를 사용할 수 있다. ThreadStart 델리게이트는 public delegate void ThreadStart(); 프로토타입에서 알 수 있듯이, 파라미터를 직접 전달 받지 않는다. ( 물론 파라미터를 전달하는 방식은 있다. ) ParameterizedThreadStart 델리게이트는 public delegate void ParameterizedThreadStart(obejct obj); 로 정의 되어 있는데, 하나의 object파라미터를 전달하고 리턴 값이 없는 형식이다. 하나의 파라미터를 object형.. 2017. 6. 20.
C# Thread 클래스 쓰레드란? 쓰레드는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위, 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. C# 쓰레드의 생성 C#에서 쓰레드를 만드는 기본적인 클래스로 System.Threading.Thread라는 클래스가 있다. 이 클래스의 생성자에 실행하고자 하는 메서드를 델리게이트로 지정한 후, Thread클래스 객체에서 Start() 메서드를 호출하면 새로운 쓰레드가 생성되어 실행되게 된다. 아래 예는 동일 클래스 안의 Run() 메서드를 실행하는 쓰레드를 하나 생성한 후 실행시키는 예제이다. 예제에서는 기본적으로 생성된 메인 쓰레드에서도 동일하게 Run메서드를 호출하고 있으므로, Begin.. 2017. 6. 20.
C# 익명타입 : 클래스를 미리 정의하지 않고 사용하는 것. C# Anonymous Type (익명 타입) 2017. 6. 16.
C# => Lambda Expression : 무명 함수를 표현하는데 사용 주로 Linq에서 많이 사용 C# =>Lambda Expression C# 3.0 부터 지원하는 => 연산자는 C#에서 람다식을 표현할 때 사용한다. 람다식은 무명 메서드와 비슷하게 무명 함수를 표현하는데 사용된다. 람다식은 아래와 같이 입력파라미터(0개~n개)를 => 연산자 왼쪽에, 실행 문장들을 오른쪽에 둔다. 람다 Syntax : ( 입력파라미터) => {문장 블럭}; 예를 들어 하나의 문자열을 받아 들여 메시지 박스를 띄운다면 다음과 같이 간단히 쓸 수 있다. 1str => { MessageBox.Show(str); }cs 입력 파라미터는 하나도 없는 경우부터 여러 개 있는 경우가 있다. 다음 예는 파라미터가 없는 케이스 부터 두개 있는 케이스 까지 보여준다. 마지막 예는 입력 파라미터의 타입이 애매한 경우 이를 써줄 수 있.. 2017. 6. 16.
C# Anonymous Method : 무명메서드, 일회용으로 메서드를 사용 할 때 C# Anonymous Method 앞의 C# delegate 예제를 보면 예제의 delegate들은 모두 이미 정의된 메서드를 가리키고 있다. 이렇게 미리 정의된 메서드들과는 달리, C# 2.0에서부터 메서드를 미리 정의하지 않아도 되는 무명 메서드 즉 Anonymous Method를 지원하게 되었다. 만약 어떤 메서드가 일회용으로 단순한 문장들로 구성되어 있다면, 굳이 별도의 메서드를 정의하지 않아도 되는 것이다. 무명 메서드를 만들기 위해서는 delegate 키워드와 함께 아래와 같이 파라미터와 실행문장블럭을 적으면 된다.delegate 뒤에 파라미터는 해당 메서드 Prototype에 맞는 동일한 파라미터 타입이어야 하며, 실행문장블럭에는 여러 문장들을 쓸 수 있다. 무명 메서드 : delegate.. 2017. 6. 15.
C# Delegate C# Delegate C# delegate는 c/c++의 함수 포인터와 비슷한 개념으로 메서드 파라미터와 리턴 타입에 대한 정의를 한 후, 동일한 파라미터와 리턴 타입을 가진 메서드를 서로 호환해서 불러 쓸 수 있는 기능이다. 예를 들어 아래 RunDelegate 델리게이트는 입력 파라미터가 int 하나이고 리턴 값이 없는 메서드를 가리킨다.RunThis() 메서드와 RunThat() 메서드는 모두 int 파라미터 하나에 리턴 값이 없는 메스드므로, RunDelegate의 함수 형식(prototype)과 맞으므로 이 delegate를 사용할 수 있다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474.. 2017. 6. 14.
반응형