멀티 스레딩 환경에서 UI 요소에 액세스하려고 할 때 "크로스 스레드 작업이 잘못되었습니다"와 같은 오류 메시지에 직면하기 쉽습니다. 이는 UI 요소는 그것을 생성한 스레드에서만 접근해야 하는데 다른 스레드에서 접근하려고 할 때 발생합니다. 이 문제를 해결하기 위한 방법 중 하나는 `delegate`와 `Invoke`를 사용하는 것입니다. 이 글에서는 이러한 오류를 해결하는 방법을 살펴보겠습니다. 1. 메인폼 종료하기 메인폼을 종료하려면 다음과 같이 delegate를 선언합니다. delegate void SetFormCloseCallback(); 다음의 함수를 작성하여 메인폼을 안전하게 종료할 수 있습니다. private void SetClose() { if (this.InvokeRequired) { S..
Language
C# 프로그래밍을 하다 보면 애플리케이션의 구성 설정을 파일에서 읽어와야 할 때가 있습니다. 이때 ConfigurationManager.AppSettings를 사용하면 손쉽게 구성 설정 값을 읽어올 수 있습니다. 하지만 때로는 오류가 발생하거나 예상대로 작동하지 않는 경우가 있습니다. 이러한 상황에서 MSDN에서 제안하는 대안적인 방법을 사용할 수 있습니다. NameValueCollection 사용하기 ConfigurationManager.AppSettings를 사용하기 위해서는 먼저 System.Configuration 어셈블리를 참조에 추가해야 합니다. 이 과정은 프로젝트의 참조 설정에서 진행할 수 있습니다. 단계별 설정 방법 1. 어셈블리 참조 추가 솔루션 탐색기에서 프로젝트를 우클릭하고 [참조 추..
C#에서 개발한 프로그램을 다양한 환경에서 실행하다 보면, 화면 해상도나 글꼴 크기에 따라 Form의 크기나 레이아웃이 제대로 표시되지 않는 문제에 부딪힐 수 있습니다. 이러한 문제는 OS 환경, 화면 해상도, 글꼴 설정 등 다양한 요인에 의해 발생합니다. 본 글에서는 이 문제의 원인과 C#에서 제공하는 자동 배율 조정 기능을 사용하여 해결하는 방법에 대해 설명하겠습니다. 1. 문제 상황 해외 출장 중 다양한 환경의 OS에서 만든 프로그램을 실행해보니, 설계했던 Form의 크기나 레이아웃이 올바르게 표시되지 않는 경우가 발생했습니다. 데스크탑에서 제작한 프로그램을 노트북에서 띄웠을 때 종종 이러한 경우가 있었는데, 해외로 나가니까 프로그래머의 자존심에 이러한 문제는 반드시 해결하고 싶었습니다. 2. 자동..
유니티 엔진을 사용하며 프로젝트를 진행하다 보면, 때때로 여러 프로젝트를 동시에 열어두고 작업하고 싶을 때가 있어요. 기존 소스와 구조를 비교하거나 다양한 시도를 병행해보고 싶은데, 유니티가 기본적으로 한 번에 하나의 창만 허용한다 보니 번거롭고, 때로는 답답함을 느낄 수 있죠. 이런 작업 방식의 제약을 해결하고 여러 프로젝트 창을 동시에 띄울 수 있는 방법이 있습니다. 의외로 간단한 설정 변경만으로 여러분의 작업 효율성을 크게 향상시킬 수 있답니다. 1. 유니티 바로가기 아이콘 설정 먼저, 유니티의 바로가기 아이콘에서 오른쪽 마우스를 클릭해서 속성을 수정해야 합니다. 바탕 화면이나 파일 탐색기에서 유니티 바로가기 아이콘을 찾은 다음, "오른쪽 버튼 클릭 > 속성"을 선택해주세요. 속성 창이 열리면, 여..