반응형 C#16 C# 태스크(Task)와 비동기 프로그래밍: 생성, 연속 작업, 부모-자식 관계 이해 internal class Program { static int TaskMethod(string name, int second) { DateTime now = DateTime.Now; string formattedTime = now.ToString("HH:mm:s:fff"); Console.WriteLine($"[{formattedTime}] " + "Task {0} is running on a thread id {1}. Is thread pool thread: {2}", name, Thread.CurrentThread.ManagedThreadId, .. 2025. 1. 20. C# TPL: 태스크 생성 방식과 실행 흐름 완벽 이해 C# 태스크 병렬 라이브러리(TPL) - 태스크 생성**태스크 병렬 라이브러리(TPL)**은 멀티스레드 프로그래밍을 쉽게 하기 위해 .NET에서 제공하는 기능입니다. Task는 TPL의 핵심 클래스 중 하나로, 비동기 작업을 처리하고 스레드 풀(Thread Pool)을 활용하여 작업을 병렬로 실행합니다.예제 코드 분석internal class Program{ static void TaskMethod(string name) { Console.WriteLine("Task {0} is running on thread id {1}. Is thread pool thread : {2}", name, Thread.CurrentThread.ManagedTh.. 2025. 1. 17. C# `ref`와 `out` 키워드의 차이점과 활용법 C#에서 out과 ref 키워드는 메서드에 매개변수를 전달할 때 특별한 방식으로 사용하는 키워드입니다. 두 키워드 모두 메서드가 호출된 후에 값을 반환받기 위한 목적으로 사용되지만, 약간의 차이점이 있습니다. 차이점을 명확히 이해하기 위해 각각을 설명하고, 샘플 코드를 통해 활용 사례를 보여드리겠습니다.1. ref 키워드특징:호출 전에 반드시 변수에 초기화가 되어 있어야 합니다.메서드 내부에서 값을 수정하면 호출한 쪽에서도 수정된 값을 확인할 수 있습니다.용도: 메서드가 매개변수의 값을 수정하고, 수정된 값을 호출한 쪽에서 사용해야 할 때 적합합니다.예제using System;class Program{ static void ModifyValue(ref int number) { nu.. 2025. 1. 16. C# 람다식: 간결하고 강력한 익명 함수 이해하기 람다식(Lambda Expression)은 C#에서 매우 강력하고 유용한 기능으로, 함수 또는 메서드를 간결하게 표현하는 데 사용됩니다. 초보자도 쉽게 이해할 수 있도록 천천히 설명하겠습니다.람다식이란?람다식은 간단히 말해 **"익명 함수"**입니다. 이름이 없는 함수로, 코드를 더 짧고 간결하게 작성할 수 있도록 도와줍니다.람다식은 다음과 같은 구조를 가집니다:(입력 매개변수) => { 실행 코드 }람다식이 왜 개발되었나?코드 간결성불필요한 메서드 정의를 줄이고, 간단한 작업을 효율적으로 표현하기 위해 개발되었습니다.표현력데이터를 처리하는 함수형 프로그래밍 스타일을 지원하며, LINQ와 같은 고급 기능에서 매우 유용합니다.재사용성 및 가독성람다식을 사용하면 코드를 간결하고 읽기 쉽게 만들어 복잡한 작업.. 2025. 1. 13. C# LINQ: 데이터 쿼리를 간결하고 강력하게 다루는 방법 LINQ (Language-Integrated Query)란?**LINQ (Language-Integrated Query)**는 C#에서 제공하는 강력한 데이터 쿼리 기능입니다.SQL과 유사한 방식으로 데이터를 검색, 필터링, 정렬, 변환할 수 있도록 도와줍니다.LINQ는 데이터를 처리하는 방식을 간결하게 표현할 수 있어, 컬렉션, XML, 데이터베이스 등 다양한 데이터 소스에서 사용됩니다.LINQ의 핵심 개념컬렉션과 데이터 쿼리LINQ는 배열, 리스트, 데이터베이스 등에서 데이터를 쿼리할 수 있는 기능을 제공합니다.표현식 기반SQL처럼 데이터를 처리하는 쿼리를 간단한 표현식으로 작성할 수 있습니다.타입 안전LINQ는 컴파일 시점에 오류를 검출할 수 있어 안전한 코드를 작성할 수 있습니다.LINQ를 왜 .. 2025. 1. 13. 스레드_스레드 상태 조사_thread state C# 스레드 상태 조사 강좌C#에서 스레드 상태를 조사하려면 ThreadState 속성을 사용합니다. ThreadState는 스레드의 현재 상태를 나타내는 열거형으로, 여러 상태 값을 포함합니다. 이 강좌에서는 ThreadState를 이해하고, 예제 코드를 통해 다양한 상태를 확인해 보겠습니다.스레드 상태의 주요 값ThreadState는 다음과 같은 주요 상태 값을 포함합니다.Unstarted: 스레드가 생성되었지만 아직 시작되지 않은 상태.Running: 스레드가 실행 중인 상태.WaitSleepJoin: 스레드가 Sleep, Join 또는 다른 대기 상태에 있는 경우.Stopped: 스레드가 작업을 완료하고 종료된 상태.Aborted: 스레드가 비정상적으로 종료된 상태(예: Abort 호출로 인해)... 2025. 1. 6. 재미로 만드는 로또 번호 생성기 #1_중복 없는 번호 생성 로또 1등에 당첨될 확률은 약 1/8,145,060입니다. 아래는 C#으로 작성된, 1부터 45까지 중복 없이 6개의 숫자를 랜덤으로 뽑는 함수입니다. 이 함수는 HashSet를 사용하여 중복을 방지하고, Random 객체를 활용합니다.using System;using System.Collections.Generic;class Program{ static void Main() { // 랜덤 번호 생성 List lottoNumbers = GenerateLottoNumbers(); // 결과 출력 Console.WriteLine("랜덤 로또 번호: " + string.Join(", ", lottoNumbers)); } st.. 2025. 1. 4. C#의 Garbage Collection (GC) 개념 C#의 Garbage Collection (GC) 개념Garbage Collection(GC)은 .NET 런타임의 핵심 기능으로, 메모리를 자동으로 관리하여 개발자가 명시적으로 메모리를 해제하지 않아도 되도록 합니다. 이는 메모리 누수(Memory Leak)와 같은 문제를 방지하고, 애플리케이션의 안정성과 성능을 높이는 데 기여합니다.1. Garbage Collection의 작동 방식GC는 더 이상 참조되지 않는 객체를 탐지하여 해당 객체가 점유하고 있던 메모리를 회수합니다. 주요 작동 과정은 다음과 같습니다:객체 할당새 객체가 생성되면 관리 힙(Managed Heap)에 메모리가 할당됩니다.관리 힙은 CLR(Common Language Runtime)에 의해 관리됩니다.객체 사용객체는 메모리에 할당된 .. 2025. 1. 3. C#로 특정 폴더 내 파일 이름 변경 아래는 특정 폴더 내 모든 파일을 읽고, .exe 확장자를 가진 파일에서 파일 이름의 cam2라는 단어를 cam1로 바꾸는 C# 코드입니다.using System;using System.IO;class Program{ static void Main(string[] args) { // 특정 폴더 경로 설정 string folderPath = @"C:\Your\Folder\Path"; if (!Directory.Exists(folderPath)) { Console.WriteLine("지정된 폴더가 존재하지 않습니다."); return; } // 폴더 내 모든 파일 검색 s.. 2025. 1. 3. WNetUseConnection 함수의 리턴값과 오류 코드 목록 WNetUseConnection은 Windows API의 함수로, 네트워크 리소스에 연결을 설정하는 데 사용됩니다. 이 함수는 Mpr.dll 라이브러리에 있으며, C#에서는 P/Invoke를 사용하여 호출합니다. 함수의 반환값은 성공 또는 실패를 나타내며, 실패 시 다양한 오류 코드를 반환합니다.리턴값 목록다음은 WNetUseConnection 함수의 주요 반환값 리스트입니다:성공 코드NO_ERROR (0)연결이 성공적으로 완료되었습니다.일반 오류 코드ERROR_ACCESS_DENIED (5)액세스 권한이 거부되었습니다.ERROR_INVALID_HANDLE (6)잘못된 핸들이 전달되었습니다.ERROR_NOT_ENOUGH_MEMORY (8)메모리가 부족하여 작업을 완료할 수 없습니다.ERROR_BAD_NE.. 2025. 1. 3. 이전 1 2 다음 반응형