반응형

분류 전체보기 134

[C#/WPF] SynchronizationContext와 UI 스레드 동기화

1. SynchronizationContext란?SynchronizationContext는 코드 실행 컨텍스트를 추상화한 클래스입니다. 주로 스레드 간 작업을 조율할 때 사용되며, 특히 UI 스레드와 작업 스레드 간의 통신에서 매우 유용합니다.public class SynchronizationContext{ public virtual void Post(SendOrPostCallback d, object state); public virtual void Send(SendOrPostCallback d, object state);} 2. 왜 사용해야 하는가?2.1 기존 Dispatcher.Invoke 방식의 문제점// UI 스레드에서 실행되어야 하는 코드Application.Current.Dispa..

프로그래밍/WPF 2025.02.10

[주식 포트폴리오] SCHD+QQQ 시뮬레이션

이번에는 SCHD(70%) + QQQ(30%) 비중으로 포트폴리오를 구성하고, 2013년부터 2023년까지 시뮬레이션을 진행하여, 연도별 총 배당금과 배당 소득세를 제외한 배당금을 표에 추가하고 총 수익률까지 포함하여 결과를 알려드리겠습니다.시뮬레이션 조건:포트폴리오 구성:SCHD (고배당 가치주): 70%QQQ (기술 성장주): 30%초기 자본: 2,000만 원 (원/달러 환율 적용)시작 시점: 2013년 1월 1일종료 시점: 2023년 12월 31일매년 추가 투자: 없음리밸런싱: 매년 1월 1일에 목표 비중으로 리밸런싱배당: 발생 시 자동으로 재투자배당 소득세: 배당금의 15%를 배당 소득세로 가정 (실제 세금은 다를 수 있음)원/달러 환율: 매년 1월 1일의 환율을 적용 (과거 환율 데이터 활용)거..

경제 2025.01.14

[주식 포트폴리오] VOO+QQQ 시뮬레이션

이번에는 VOO(70%) + QQQ(30%) 비중으로 포트폴리오를 구성하고, 2013년부터 2023년까지 시뮬레이션을 진행하여, 연도별 총 배당금과 배당 소득세를 제외한 배당금을 표에 추가하고 총 수익률까지 포함하여 결과를 알려드리겠습니다.시뮬레이션 조건:포트폴리오 구성:VOO (미국 대형주): 70%QQQ (기술 성장주): 30%초기 자본: 2,000만 원 (원/달러 환율 적용)시작 시점: 2013년 1월 1일종료 시점: 2023년 12월 31일매년 추가 투자: 없음리밸런싱: 매년 1월 1일에 목표 비중으로 리밸런싱배당: 발생 시 자동으로 재투자배당 소득세: 배당금의 15%를 배당 소득세로 가정 (실제 세금은 다를 수 있음)원/달러 환율: 매년 1월 1일의 환율을 적용 (과거 환율 데이터 활용)거래 수..

경제 2025.01.14

2024년 12월 27일 국내외 주요 경제 이슈 정리

2024년 12월 27일 국내외 주요 경제 이슈 정리1. 기업 체감경기, 코로나 이후 최저 수준한국은행이 발표한 12월 기업경기실사지수(CBSI)에 따르면, 전 산업 지수가 4.5포인트 하락한 86.9를 기록하며 2020년 9월 이후 최저치를 보였습니다. 이는 정치적 불확실성과 환율 상승이 주요 원인으로 작용했습니다.출처: 조선일보시장 영향 및 투자자 시사점:기업들의 경기 전망이 악화됨에 따라 투자 심리가 위축될 가능성이 높습니다. 특히 제조업과 비제조업 모두에서 부진이 나타나고 있어, 관련 산업에 대한 투자 시 신중한 접근이 필요합니다.2. 원/달러 환율, 15년 만에 1,460원 돌파달러 대비 원화 환율이 글로벌 금융 위기 이후 처음으로 1,460원을 넘어섰습니다. 이는 내수 부진, 수출 감소, 노사..

경제 2024.12.27

[WPF] 이벤트: PreviewMouseDown과 MouseDown의 차이

WPF에서 마우스 이벤트는 두 가지 주요 유형으로 나뉩니다: PreviewMouseDown과 MouseDown. 이 두 이벤트는 이벤트 라우팅 방식에서 중요한 차이를 가지고 있습니다. 이번 포스트에서는 이 두 이벤트의 차이점과 실행 순서를 살펴보겠습니다. 이벤트 라우팅 방식1. PreviewMouseDown:터널링 단계에서 발생합니다. 즉, 이벤트가 부모 요소에서 자식 요소로 전파됩니다.2. MouseDown:버블링 단계에서 발생합니다. 즉, 이벤트가 자식 요소에서 부모 요소로 전파됩니다. 실행 순서이벤트가 발생할 때의 실행 순서는 다음과 같습니다:부모 PreviewMouseDown ↓자식 PreviewMouseDown ↓자식 MouseDown ↓부모 MouseDown 예제 코..

프로그래밍/WPF 2024.11.18

[WPF] DataGrid 가상화와 ComboBox SelectedItem 불일치 문제 해결: MVVM 패턴에서의 효율적인 접근 방법

WPF(Windows Presentation Foundation)에서 DataGrid는 대량의 데이터를 효율적으로 표시하기 위한 강력한 컨트롤입니다. 그러나 가상화(Virtualization)를 사용할 때 ComboBox와 같은 편집 컨트롤을 포함하면 예상치 못한 문제가 발생할 수 있습니다. 특히, MVVM 패턴을 사용하는 경우에는 이러한 문제가 더욱 복잡해질 수 있습니다. 이번 글에서는 DataGrid의 가상화로 인해 발생하는 ComboBox의 SelectedItem 불일치 문제를 분석하고, MVVM 패턴을 유지하면서 이를 해결하는 방법을 소개하겠습니다. 문제 상황DataGrid에 가상화를 적용하고 각 행(Row)에 ComboBox를 포함시켰을 때, SelectedIndex가 -1인 경우 ComboBo..

프로그래밍/WPF 2024.10.15

[C#] Task.Yield 사용법 및 활용 예제

비동기 프로그래밍은 현대 소프트웨어 개발에서 매우 중요한 역할을 합니다. 특히 UI 응용 프로그램에서는 긴 작업이 UI 스레드를 차단하지 않도록 하여 사용자 경험을 향상시키는 것이 필수적입니다. 이번 포스트에서는 Task.Yield를 사용하여 비동기 작업 중에 UI 응답성을 유지하는 방법에 대해 알아보겠습니다.Task.Yield란 무엇인가?Task.Yield는 C#에서 제공하는 비동기 메서드로, 현재 실행 중인 스레드를 일시적으로 양보하고 이후에 다시 제어를 반환받을 수 있게 합니다. 이 메서드는 주로 UI 응용 프로그램이나 비동기 코드에서 긴 작업이 UI 스레드를 차단하지 않도록 하기 위해 사용됩니다.Task.Yield를 호출하면 await 키워드와 함께 사용되어 현재 실행 중인 작업을 일시적으로 중단..

프로그래밍/C# 2024.09.03

[C#] C#에서 사각형 내에 포함된 선 추출하기

안녕하세요, 여러분! 오늘은 C#을 사용하여 주어진 사각형 영역 내에 포함된 선(Line) 데이터를 추출하는 방법에 대해 알아보겠습니다. 또한 사각형 영역에 걸쳐 있는 선을 자르는 방법도 다룰 것입니다. 문제 정의우리는 x, y 좌표계에 다수의 선(Line) 데이터를 가지고 있습니다. 주어진 사각형(Rect) 영역 내에 존재하는 선 데이터를 추출하는 프로그램을 작성해야 합니다. 만약 사각형 영역에 완전히 포함되지 않고 걸쳐 있는 선이 있는 경우, 선을 잘라서 영역 내만 포함되도록 변경하여 추출해야 합니다. 단계별 구현1. 데이터 구조 정의먼저, 포인트(Point), 라인(Line), 사각형(Rect) 구조체를 정의합니다.public struct Point{ public double X { get; ..

프로그래밍/C# 2024.08.07

[C#] Extension 메소드 사용하기

C# 프로그래밍에서 Extension 메소드(확장 메소드)는 기존의 타입에 새로운 메소드를 추가할 수 있게 해주는 강력한 기능입니다. 이 기능은 특히 기존 라이브러리나 프레임워크를 수정하지 않고도 해당 타입의 기능을 확장하고 싶을 때 유용합니다. 1. Extension 메소드란 무엇인가?Extension 메소드는 정적 메소드로 선언되지만, 특정 타입의 인스턴스 메소드처럼 사용될 수 있습니다. 이 메소드는 this 키워드를 사용해 첫 번째 파라미터에 기존 타입을 명시함으로써 해당 타입의 인스턴스에 대해 호출할 수 있게 됩니다.2. Extension 메소드 구현 방법Extension 메소드를 구현하려면 다음과 같은 단계를 따르세요:정적 클래스 생성: Extension 메소드는 정적 클래스 내부에 정의되어야 ..

프로그래밍/C# 2024.05.08
반응형