C#

· C#
이번 포스팅은 저번 포스팅에 이어 이벤트에 관한 내용입니다. 이벤트 발생에 대한 내용보다 정의와 등록에 대한 내용을 먼저 했어야 했는데 거꾸로 됐네요ㅎㅎ 이벤트 발생에 대한 내용은 아래 글에서 확인하실 수 있습니다. https://wjunsea.tistory.com/135 C# 이벤트 발생 (Event Raising) 이해 이번 포스팅은 C#에서 이벤트를 어떻게 정의하고 발생시키는지에 대해 알아보겠습니다. | 이벤트란? - 이벤트(Event) : 객체 또는 클래스에서 발생하는 상황, 조건을 나타내며 다른 부분(이벤트 핸 wjunsea.tistory.com | 이벤트 정의 - 이벤트는 C# 언어에서 특정 상황, 조건이 발생했을 때 이벤트 핸들러에게 알리는 메커니즘입니다. - 특정 조건이 충족될 때 호출되며..
· C#
이번 포스팅은 C#에서 이벤트를 어떻게 정의하고 발생시키는지에 대해 알아보겠습니다. | 이벤트란? - 이벤트(Event) : 객체 또는 클래스에서 발생하는 상황, 조건을 나타내며 다른 부분(이벤트 핸들러)에 이를 알리는 메커니즘 - 특정 조건이 충족될 때 호출되며, 예를 들어 GUI 요소에서 버튼 클릭, 마우스 이동 등 이벤트 발생 | 이벤트 정의 public event EventHandler MyEvent; - 기본적으로 클래스 내에서 delegate 형식을 사용하여 정의되며 위 코드에서 MyEvent는 EventHandler 형식의 이벤트를 정의하는 것입니다. | 이벤트 발생 메서드 정의 - 이벤트를 발생시키기 위해서 메서드를 정의하여 이 메서드는 이벤트가 발생할 때 호출 됩니다. public voi..
· C#
이번 포스팅은 C#에서 자주 사용하였지만 정확한 명칭은 몰랐던 자동 구현 속성 이해 (Auto-implemented Properties)에 대해 정리하였습니다. 프로퍼티(Property)를 자동으로 사용하기 위함이며 편리하게 사용할 수 있습니다. | 자동 구현 속성 기본 구조 public type PropertyName { get; set; } type : 속성이 반환하는 데이터 유형 PropertyName : 속성 이름 { get; set; } : get, set 접근자로 속성 값을 읽거나 설정하는 데 사용 | 자동 구현 속성 동작 원리 내부적으로 해당 속성을 저장하고 반환하는 백엔드 필드 생성 백엔드 필드의 이름은 자동 생성되며 외부에서 직접 액세스 불가 컴파일러가 필드를 처리하므로 get 및 set..
· C#
회사에서 프로젝트를 진행하면서 계속해서 사용하는 것이 비동기 작업입니다. 코드로 비동기 작업을 구현하다 보면 꼬이는 경우가 간혹 발생하는데요 저는 이 문제를 해결하기 위해 많은 부분에 CancellationToken을 사용하여 해결합니다. 이번 포스팅은 CancellationToken에 대해 정리해보려 합니다. | CancellationToken 이해 - Cancellationtoken은 .NET에서 비동기 작업을 관리하는 데 사용되는 중요한 요소 중 하나입니다. Cancellationtoken를 작업이 취소되었을 때 작업을 정리하며 리소스를 해제하여 프로그램 관리에 더 도움을 주게 되며 주로 병렬 프로그래밍이나 비동기 프로그래밍에서 많이 사용합니다. | CancellationToken의 주요 개념 1...
· C#
지난번 포스팅에서 Bitmap.Clone과 new Bitmap의 차이를 보여드리며 이미지 복사하는 방법에 대해 알아봤습니다. 이번 포스팅은 Bitmap을 사용하면서 이미지를 복사하는 다른 방법인 Marshal.Copy() 메서드에 대해 작성하였습니다. | Marshal.Copy() 개요 - Marshal.Copy 메서드란 Bitmap 이미지를 관리되는 메모리와 비관리 메모리 간에 복사해야 할 때가 있습니다. 이러한 작업을 효율적으로 수행하기 위해 System.Runtime.InteropServices.Marshal 클래스의 Copy 메서드입니다. 기본 형식) public static void Copy(IntPtr source, byte[] destination, int startIndex, int len..
· C#
C#에서 이미지를 복사해서 작업해야 하는 경우가 있습니다. 복사하는 방법에는 다른 방법이 있지만 주로 저는 Bitmap 클래스의 Clone 메서드를 쓰거나 new Bitmap으로 새로운 객체를 만들기도 하는데요. 실제 코드를 보다 보면 이 두 개를 어떤 상황에서 쓰는지 알 수 없었습니다. 이번 포스팅은 Bitmap.Clone() 메서드와 new Bitmap을 비교하고 간단한 예시로 확인해 보겠습니다. | Bitmap.Clone() - 기존 Bitmap 객체의 복사본을 만드는 데 사용하는 메서드이며 원본 이미지를 변경하지 않으면서 이미지를 조작할 수 있습니다. Clone 작업 후 이미지를 회전, 크롭 등 다양한 작업을 할 수 있습니다. 간단한 예시를 보겠습니다. 예시) Bitmap originalBitma..
· C#
이번 포스팅은 제가 C#에서 영상처리 구현을 공부하면서 알게 된 Bitmap 클래스의 LockBits 메서드에 대해 작성하려 합니다. 이때까지 픽셀 단위 작업을 하며 GetPixel, SetPixel 메서드를 사용하며 작업했는데 속도면에서 LockBits 메서드가 더 빠르다는 것을 알았고 더욱 사용하게 되었습니다. GetPixel, SetPixel에 대해 간단히 설명하고 LockBits 메서드에 대해 예제와 함께 정리하겠습니다. | GetPixel 및 SetPixel 메서드 - GetPixel과 SetPixel을 사용하면 이미지 데이터에 대한 직접적인 포인터 액세스를 하지 않아도 작업할 수 있으므로 코드가 더 안정적일 수 있습니다. - 하지만 GetPixel과 SetPixel 메서드는 비트맵 이미지의 픽..
· C#
이번 포스팅은 C# bitmap 클래스를 공부하면서 몰랐던 unsafe / fixed 키워드에 대해 작성하려 합니다. C#은 .Net 환경에서 메모리 관리를 자동으로 처리하는 기능을 제공하지만 가끔 직접 메모리를 조작해야 하는 경우도 있습니다. 이런 경우에 C#에서 unsafe와 fixed 키워드를 사용하여 메모리를 관리할 수 있으며 예시를 통해 알아보도록 하겠습니다. | unsafe 키워드 - unsafe 키워드는 이름 그대로 안전하지 않은 코드를 작성할 수 있게 해 줍니다. unsafe 키워드를 사용하면 C#에서 포인터와 같은 메모리 관리 작업을 수행할 수 있습니다. 주로 성능을 최적화하거나 메모리에 접근하는 작업에 사용되며 간단한 예시를 통해 unsafe에 대해 알아보겠습니다. 예시) unsafe ..
우준세
'C#' 카테고리의 글 목록 (4 Page)