본문 바로가기

전체 글303

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.