Language 17

[C#] iteration 안에 await문을 넣으면 안되는 이유

await 키워드를 for 루프 내부에서 사용하면 예상치 못한 동작 또는 오류가 발생할 수 있다. 특히 UI 애플리케이션이나 비동기 코드와 같은 특정 상황에서는 더욱 그렇다. 이는 await 키워드가 비동기 작업이 완료될 때까지 함수의 실행을 일시 중단하는 데 사용되기 때문이다. 부적절하게 사용하면 루프가 의도치 않은 방식으로 작동할 수 있다. 다음은 잘못된 코드의 예시이다: async Task ProcessItemsAsync(List items) { for (int i = 0; i < items.Count; i++) { ... // 비동기 작업(예: HTTP 요청)을 대기한다. await SomeAsyncMethod(); ... } } 위의 예에서는 루프 내에서 비동기 작업을 대기하면 해당 작업이 완료..

Language/C# 2024.01.18

[.NET] Garbage Collector의 영향과 Timer 클래스의 안전한 사용 방법

이 포스트에서는 C#에서 Garbage Collector의 영향과 이에 따른 Timer클래스의 안전한 사용 방법에 대해 정리해보고자 한다. Garbage Collector(GC)의 역할 Garbage Collector는 .NET Framework에서 메모리 관리를 자동화하는 중요한 요소이다. GC는 더 이상 사용되지 않는 객체들을 감지하고 이들을 메모리에서 해제하여 리소스 누수를 방지한다. 하지만 때때로 GC의 작동 방식으로 인해 예상치 못한 결과가 발생할 수 있다. 특히 Timer 클래스와 같이 주기적으로 호출되어야 하는 기능을 구현할 때에 주의가 필요하다. Timer 클래스의 일반적인 사용 방법과 GC의 영향 보통 Timer클래스를 사용하여 반복적인 작업을 수행하도록 프로그램을 구현할 수 있다. 예를..

Language/C# 2023.07.20

[.NET] System.Threading.Timer Class에 대해

해당 포스팅은 Timer Class의 공식문서를 직접 번역하면서, 부연설명을 추가하여 작성한 포스팅이다. 정의 Namespace: System.Threading Assembly: System.Runtime.dll 지정된 간격으로 thread pool thread에서 메서드를 실행하기 위한 메커니즘을 제공한다.이 클래스는 상속할 수 없다. *(스레드 풀이란? 이전 포스팅 참고) public sealed class Timer : MarshalByRefObject, IAsyncDisposable, IDisposable Inheritance Object → MarsharByRefObject → Timer Implements IDisposable, IAsyncDisposable 예제 다음 예제에서는 시그니처가 T..

Language/C# 2023.07.20

[.NET] Thread Pool에 대해 이해하기

C# .NET에서 비동기 작업을 효율적으로 처리하는 방법 중 하나는 ThreadPool을 사용하는것이다. 이 포스팅에서는 C# .NET에서 Thread Pool의 개념과 활용 방법에 대해 중점적으로 다뤄보려고 한다. Thread Pool이란? Thread Pool은 C# .NET에서 비동기 작업을 처리하기 위해 사용되는 기능이다. 기본적으로는 미리 생성된 작업자 스레드(worker thread)의 풀을 유지하면서, 작업이 들어오면 이 작업자 스레드들이 비동기적으로 작업을 처리한다. 스레드 생성과 스레드 소멸에 따른 오버헤드를 피하고, 스레드를 재사용함으로써 성능을 향상시키는 장점을 가지고 있다. Thread Pool의 사용 이점 스레드 생성 및 소멸 오버헤드 감소: 미리 생성된 스레드 풀을 사용하여 스레..

Language/C# 2023.07.20

[.NET] Garbage Collector에 대해

C# .NET에서 메모리 관리는 개발자에게 큰 부담이 될 수 있다. 이러한 부담을 줄이기 위해 C# .NET은 자동 메모리 관리 기능인 Garbage Collector를 제공한다. 이 포스팅에서는 Garbage Collector의 개념과 작동 방식에 대해 알아보고, C#에서 메모리 누수를 방지하는 방법을 정리해보고자 한다. Garbage Collector란? Garbage Collector(GC)는 동적으로 할당된 메모리 중에서 더 이상 사용되지 않는 객체를 감지하고, 이러한 객체들의 메모리를 자동으로 해제하여 시스템 자원을 최적화하는 역할을 한다. 개발자는 메모리 해제를 명시적으로 관리할 필요가 없으며, GC가 대신 처리한다. Garbage Collector 작동 방식 Mark and Sweep 알고리..

Language/C# 2023.07.20

[C#] int형 변수끼리 나눗셈 결과 소숫점 이하 값이 버려지는 현상

JavaScript과 같은 동적 타이핑(dynamic typing)을 지원하는 언어를 사용하다가 C#으로 넘어와 개발하다보면 자료형에 대해 간과하다가 이슈가 생길 때가 있다 . 이번 포스팅에서는 int형 변수끼리 나눗셈 수행하면 소숫점 이하 값이 버려지는 현상과 그 이유에 대해 알아보자. 1. 문제 현상 C#에서 int현 변수끼리의 나눗셈을 수행하면 소숫점 이하 값이 버려지고, 정수 결과로 나타나는 경우가 있다. using System; public class Program { public static void Main() { int num1 = 3; int num2 = 2; Console.WriteLine("나눗셈 결과: " + num1 / num2); } } 위의 코드를 실행하면 결과는 '1'이 출력..

Language/C# 2023.07.02

ASP.NET와 ASP.NET Core의 차이점

ASP.NET와 ASP.NET Core 모두 마이크로소프트에서 개발된 웹 애플리케이션 프레임워크이다. 하지만 둘은 몇 가지 중요한 차이점이 있다. 아래는 ASP.NET와 ASP.NET Core의 주요 차이점이다. 1. 아키텍쳐 ASP.NET은 Windows 전용이며 Windows 운영체제가 필요한 전체 .NET Framework를 기반으로 한다. 반면 ASP.NET Core는 Windows, macOS및 Linux에서 실행할 수 있는 크로스 플랫폼 프레임워크이다. ASP.NET Core는 성능과 확장성을 위해 설계된 경량의 모듈식 아키텍처를 기반으로 한다. 2. 크로스 플랫폼 지원 앞서 언급했듯이, ASP.NET Core는 플랫폼 간 지원을 제공하여, 개발자가 다양한 운영 체제에서 웹 애플리케이션을 빌드..

Language/ASP.NET 2023.06.11

ASP.NET Core의 폴더 구조

1. 개요 이 포스팅에서는 ASP.NET 프로젝트의 폴더 구조와 파일에 대해 상세히 알아보려고 한다. ASP.NET 애플리케이션 개발 시 필수적으로 사용되는 각 폴더와 파일에 대한 설명을 제공할 것이다. 2. ASP.NET의 주요 폴더 App_Data 데이터 파일을 저장하는 데 사용된다. 주로 데이터베이스 파일이나 XML 파일과 같은 데이터 소스를 저장하는 데 사용된다. App_Start 애플리케이션 시작 시 실행되는 코드 파일을 포함한다. 일반적으로 라우팅, 필터 설정, DI(Dependency Injection) 컨테이너 설정 등과 같이 애플리케이션을 구성하는 초기화 코드가 포함된다. Content CSS(Cascading Style Sheets), 이미지 및 기타 정적 컨텐츠 파일을 저장하는 데 사..

Language/ASP.NET 2023.06.11

ASP.NET에 대해

1. ASP.NET이란 ASP.NET은 Microsoft가 개발한 웹 응용 프로그램 개발 프레임워크이다. 이 프레임워크는 웹 애플리케이션, 웹 서비스 및 웹 페이지 개발에 사용된다. ASP.NET은 기본적으로 .NET 프레임워크에서 지원되며, C#이나 Visual Basic과 같은 .NET 언어를 사용하여 개발할 수 있다. 2. ASP.NET의 특징 (1) 서버 측 기술 ASP.NET은 서버 측에서 실해오디는 웹 응용 프로그램을 개발하기 위한 강력한 기술이다. 서버에서 애플리케이션 로직을 처리하고 클라이언트에게 결과를 제공한다. (2) 다양한 언어 지원 C#, Visual Basic등 다양한 언어를 사용하여 개발할 수 있다. 이는 개발자가 자신이 편한 언어를 선택하여 웹 애플리케이션을 개발할 수 있도록 ..

Language/ASP.NET 2023.06.11

[C#] Interlocked.Increment

1. 개요 C#으로 비동기 함수를 구현할때, 변수의 값을 증가시킬 때에 동기 함수를 구현했을때와는 다르게 Interlocked.Increment메서드를 사용하게 되어 이 메서드의 역할이 궁금해서 찾아보게 되었다. 2. Interlocked.Increment 메서드란? Interlocked.Increment 메서드는 원자적(atomic)인 증가 연산을 수행하는 메서드이다. 원자적 연산은 여러 스레드가 동시에 접근하여 값을 증가시키는 경우에도 데이터의 무결성을 보장하기 위해 사용된다. 3. Interlocked.Increment 메서드를 사용하는 이유 일반적으로 변수의 값을 증가시키는 연산은 여러 스레드에서 동시에 수행될 수 있다. 이 경우 여러 스레드가 동시에 값을 읽어 증가시킨 다음, 각각의 스레드가 업..

Language/C# 2023.05.29
반응형