본문 바로가기
728x90
반응형

전체 글295

C#] File - 사용 중인 파일 확인 방법 (IOException, HResult) 파일작업은 흔하게 하는 작업이며, 몇몇 경우에 특정 에러를 발생한다. 이미 사용중인 파일에 대해 살펴보고, 에러를 피할 수 있는 방법을 살펴보자. C# 파일작업 일반적으로 파일작업은 읽기, 쓰기, 파일 조작들의 동작이 관련되어 있다. 파일작업을 할 때, 여러 작업 또는 앱에서 동시에 같은 파일에 접근을 시도할 수 있다는 것을 알아야한다. 이러한 동시 접근은 충돌과 에러를 발생한다. 다음과 같은 여러 이유로 발생한다. 다른 앱에서 동시에 파일을 읽거나 쓰고 있을 때 파일을 열었다가 적절히 닫지 않았을 때 돌고있는 시스템이나 바이러스 프로그램에 의해 파일이 잡혀 있을 때 어떻게 이러한 오류를 줄이고 피할 수 있는지 알아보자. Project 세팅 .NET CLI를 사용하여 console app을 생성하자. 에.. 2024. 1. 18.
C#] 식별자/변수명 네이밍 규칙, convention identifier(식별자)란? type(class, interface, struct, delegate, enum) type명, 변수명, member명, namespace명이다. 네이밍 규칙 identifier는 반드시 아래 규칙을 따라야 한다. 아래 규칙을 따르지 않으면 C# compiler가 error를 발생한다. Identifier는 반드시 문자 또는 밑줄선(_)으로 시작한다. if라는 이름의 식별자를 선언하려면 @prefix를 붙여서 @if 로 선언하면 된다. 네이밍 conventions 규칙에 더해, identifier conventions이 .NET API 전체에 사용된다. 이 conventions은 compiler가 강제하지 않더라도, name의 일관성을 제공한다. 다르게 사용해도 무방하다... 2024. 1. 12.
C#] Observer Design Pattern(관찰자 디자인 패턴) Observer Design Pattern에 대해서 objects 사이의 알림 mechanism을 만들 수 있다. 여러 objects가 다른 object를 관찰하고, 관찰하는 object에 이벤트 발생 시 알림을 받는다. 한쪽에는 관찰되는 object인 Provider가 있고, 다른 한쪽에는 Provider를 관찰하는 하나 이상의 Observers가 있다. 이벤트 또는 상태변경과 같은 미리 지정된 조건 발생 시, Observer는 Provider에 대한 알림을 받을 수 있다. Observer Design Pattern이 필요한 경우 이 패턴은 application 내부에 분산된 알림 system이 구현되어 있을때 도움이 된다. 이커머스 시스템을 갖고 있다고 하자. 몇몇 고객들은 특정 판매자의 제품에 관심.. 2024. 1. 10.
C#] Deprecated Method 표시, 미사용 함수 표시 C#에서 어떻게 deprecated method를 표시하는지 알아보자. Preparing the Environment public static class DateUtils { public static int GetCurrentYearV1() { return 2022; } public static int GetCurrentYearV2() { return DateTime.UtcNow.Year; } } 현재 연도를 가져오는 함수가 2개 있다. GetCurrentYearV1() 함수는 과거 연도를 반환한다. GetCurrentYearV2() 함수가 현재 연도를 가져오기 더 적합하다. ObsoleteAttribute GetCurrentYearV1() 함수에 ObsoleteAttribute를 사용하므로 deprec.. 2024. 1. 9.
C#] PeriodicTimer class 몇 시스템 개발 시, task 실행을 일정한 시간을 두고 해야할 때가 있다. C#은 .NET 6에서 소개된 PeriodicTimer class를 제공한다. 기능과 사용법을 살펴보고 간단히 구현해보자. C#에서 PeriodicTimer Class 작동법 1. 필요한 변수를 정의하자. private readonly PeriodicTimer _periodicTimer; private readonly CancellationTokenSource _cancellationToken = new(); private Task? _task; private int _size; 차후 초기화할 PeriodicTimer 변수가 있다. 반복 Task를 종료시킬때 사용할 CancellationTokenSource 변수를 정의하고 초기.. 2024. 1. 9.
C#] Pipes and Filter Architectural Pattern 순차적이고 독립적인 processing data 또는 tasks를 위한 modular 하고 유연한 system을 설계하기 위한 목적의 design pattern이다. 여러 단계를 거치며 각 단계별로 특정한 data 변환 또는 operation이 필요한 data streams을 다루는데 매우 유용하다. data processing pipelinex, text processing와 관련된 application에서 일반적으로 사용되는 패턴이다. 어떻게 이 디자인 패턴이 동작하고 기본적인 개념에 대해 살펴보자. Pipes and Filter Architectural Pattern의 이해 Pipes and Filters pattern은 component-based architectural design patter.. 2024. 1. 9.
728x90
반응형