전체 글
RichTextBox에 텍스트 추가하고 자동 스크롤하기
Windows Forms 애플리케이션을 개발할 때, 디버깅 및 로깅 용도로 RichTextBox 컨트롤을 사용하는 경우가 많습니다. 이때 RichTextBox에 텍스트를 추가하고 자동으로 스크롤을 내리는 기능은 매우 유용합니다.아래는 RichTextBox에 텍스트를 추가하고 자동으로 스크롤을 내리는 C# 코드입니다 public void AddDebugLog(string message){ if (rchDebug.InvokeRequired) { rchDebug.Invoke(new MethodInvoker(() => { if (rchDebug.Text.Length > 1000000) rchDebug.Clear(); rchDebug.Ap..
비동기 프로그래밍에서 Task.Delay의 독립적인 실행
비동기 프로그래밍을 할 때 Task.Delay를 사용하면 각 Task가 독립적으로 실행되는 것을 알아두면 좋습니다. 이 포스팅에서는 Task.Delay를 사용할 때의 핵심 원리와 특징을 살펴보겠습니다.1. 독립적인 실행아래와 같은 코드에서 statusTask와 backgroundTask는 서로 독립적으로 실행됩니다.using System;using System.Threading;using System.Threading.Tasks;public class Program{ private static readonly CancellationTokenSource cts = new CancellationTokenSource(); private static async Task Main(string[] arg..

C# WinForms에서 콘솔 창 띄우기
안녕하세요, 프로그래머 여러분! 오늘은 C# WinForms 애플리케이션에서 콘솔 창을 띄우는 두 가지 방법에 대해 알아보겠습니다. 때로는 GUI 애플리케이션에서도 콘솔 출력이 필요한 경우가 있죠. 디버깅이나 로깅 목적으로 유용하게 사용할 수 있습니다. 1. 프로젝트 속성 변경하기첫 번째 방법은 프로젝트 설정을 변경하여 콘솔 창을 활성화하는 것입니다. 1. 솔루션 탐색기에서 프로젝트를 우클릭합니다. 2. '속성'을 선택합니다. 3. '애플리케이션' 탭으로 이동합니다. 4. '출력 형식'을 '콘솔 애플리케이션'으로 변경합니다.이 방법의 장점은 간단하다는 것입니다. 하지만 애플리케이션이 시작될 때 항상 콘솔 창이 표시된다는 점을 유의해야 합니다. 2. AllocConsole API 사용하기두 번째 방법은 W..
C# 프로그램 배포 시 소스 코드 보호하기 : 난독화와 패킹
소스 코드 노출C#으로 개발된 프로그램을 배포할 때, 소스 코드가 쉽게 노출될 수 있다는 문제점이 있습니다. 이는 C#이 .NET 프레임워크를 기반으로 하는 관리 코드(managed code) 언어이기 때문입니다. C# 컴파일러는 소스 코드를 직접 기계어로 변환하지 않고, 중간 언어(IL, Intermediate Language)로 변환합니다. 이 IL 코드는 실행 시점에 JIT(Just-In-Time) 컴파일러에 의해 기계어로 변환됩니다. 이로 인해 C#으로 작성된 프로그램의 실행 파일(.exe)이나 라이브러리(.dll)는 디컴파일하기 쉬운 상태로 배포됩니다. 악의적인 사용자가 IL 디컴파일러를 사용하면 원본 소스 코드와 매우 유사한 코드를 쉽게 얻을 수 있습니다. 소스 코드 보호를 위한 방법이러한 ..
Directory : 디렉토리 관리
C#에서 디렉토리와 파일을 다루는 작업에는 필수적인 Directory 클래스에 대해 알아보겠습니다. 이 클래스는 디렉토리 생성, 삭제, 이동, 이름 바꾸기, 열거 등 다양한 기능을 제공하며, 파일 관리와 함께 폴더 구조 관리에도 강력한 도구입니다.Directory 클래스 소개Directory 클래스는 System.IO 네임스페이스에 속하며, 정적 메서드와 인스턴스 메서드를 통해 다양한 디렉토리 작업을 수행할 수 있도록 지원합니다.핵심 기능:디렉토리 생성 및 삭제: CreateDirectory, DeleteDirectory디렉토리 이동 및 이름 바꾸기: MoveDirectory, RenameDirectory디렉토리 정보 확인: Exists, GetCreationTime, GetLastAccessTime, ..

Costura.Fody : 참조 DLL 라이브러리 하나로 합치기
.NET 개발자라면 누구나 겪는 고민, 바로 프로젝트 배포 시 참조 DLL 라이브러리 관리입니다. 여러 DLL 라이브러리를 따로 배포해야 하는 경우, 사용자들에게 불편을 줄 수 있고, 프로젝트 관리에도 어려움이 발생할 수 있습니다. 이러한 문제를 해결하기 위해 Costura.Fody라는 유용한 도구를 활용할 수 있습니다. Costura.Fody는 Fody라는 .NET 코드 변환 도구를 기반으로 작동하며, 프로젝트에 참조된 모든 DLL 라이브러리를 단일 DLL 파일로 합쳐 제공합니다. 이를 통해 사용자들은 별도의 DLL 설치 없이도 간편하게 앱을 실행할 수 있으며, 개발자는 프로젝트 배포 및 관리를 한층 더 효율적으로 수행할 수 있습니다. 사용 방법 NuGet 패키지 설치: Visual Studio에서 C..
Unity 화면 꺼짐 방지
모바일 앱 개발자라면 누구나 경험했을 끔찍한 순간, 바로 중요한 작업 진행 중에 화면이 꺼지는 것입니다. 이러한 불편한 상황을 방지하기 위해 Screen.sleepTimeout 프로퍼티를 사용하여 화면 꺼짐을 자유롭게 제어할 수 있습니다. Screen.sleepTimeoutScreen.sleepTimeout 프로퍼티는 모바일 앱에서 화면이 꺼지기까지 기다리는 시간을 설정합니다. 기본적으로 이 값은 사용자가 마지막으로 화면을 만진 후 일정 시간이 지나면 화면이 꺼지도록 설정되어 있습니다. 하지만 Screen.sleepTimeout 프로퍼티를 사용하여 원하는 대로 화면 꺼짐 시간을 변경할 수 있습니다. 작동 방식SleepTimeout.NeverSleep는 최대값을 의미하며, 이 값을 Screen.sleep..
Unity 인터넷 연결 확인하기
Application.internetReachability란Application.internetReachability는 유니티에서 제공하는 프로퍼티로, 현재 디바이스의 인터넷 연결 상태를 나타냅니다. 이 프로퍼티는 세 가지 값을 반환하며, 각 값은 다음과 같은 의미를 가지고 있습니다:NotReachable: 인터넷 연결이 전혀 없음ReachableViaCarrierDataNetwork: 이동통신 데이터 네트워크를 통해 인터넷에 연결됨ReachableViaLocalAreaNetwork: Wi-Fi 네트워크를 통해 인터넷에 연결됨활용 방법Application.internetReachability는 다양한 상황에서 유용하게 활용될 수 있습니다. 대표적인 활용 사례는 다음과 같습니다.인터넷 연결 필요한 기능 제..