본문 바로가기

전체 글

WPF & C# - struct 구조체 WPF & C# - struct 구조체 struct Test { public int x; public int y; public int z; } private void Button_Click(object sender, RoutedEventArgs e) { Test a = new Test(); a.x = 1; a.y = 2; a.z = 3; lbl01.Content = a.x; lbl02.Content = a.y; lbl03.Content = a.z; } 더보기
자동차 - 배터리 교체 시 유의사항 최근 자동차 배터리에 이상이 생겨서 배터리를 구매하려고 알아봤다. K5 제품은 용량이 80 짜리를 쓴다하여 먼저 인터넷 최저가를 검색했다. [ 공구대여+폐전지반납 ] 아트라스 BX80L : 50,800원 로케트 GB80L : 61,300원 델코 DF80L : 63,800원 아... 배터리가 하루도 못되어서 또 불량이 났다. 공휴일이라 택배도 이틀더 기다려야 하는데... 주변에 자동차배터리 교환 업체를 알아봤다. 지금 X-PRO 제품밖에 없다하더라. XP80L 교체까지 다 해주는 조건으로 현금 6만원 생각보다 가격이 괜찮았다. 중요한건 지금얘기다. 배터리교환한다고 하더니 시동을 걸라고 한다. 전기가 완전히 나가면 자동차 내부장치들이 초기화 되는경우가 발생해서 이를 방지하고자 시동을 켜놓고 배터리를 교환한다.. 더보기
WPF & C# - Interlocked ( 멀티쓰레딩에서 변수 변경 시 필수 / lock 대체 / 멀티쓰레드 / MultiThread / Threading ) WPF & C# - Interlocked ( 멀티쓰레딩에서 변수 변경 시 필수 / lock 대체 / 멀티쓰레드 / MultiThread / Threading ) 동시에 여러 쓰레드에서 외부 변수를 POP 하거나 Peek 할 때 문제가 발생할 수 있다. ( POP, Peek 뭔 말인지 잘 모르겠다. 어쨌든 문제가 되는부분은 변수를 읽을때는 아니고 변경할 때를 말하는 듯 하다. ) 한 쓰레드에서 외부 변수를 변경하고 있을 때, 다른 쓰레드에서 그 변수를 읽는다면 전혀 다른 값이 발생 할 수 있다는 뜻이다. 이를 해결하기 위한것이 lock 였다. 그러나 lock 속도를 많이 잡아먹고 잘못 사용할 경우 교착상태에 빠지는등의 이슈가 발생되는 문제가 발생한다. 이를 방지하고자 나온것이 Interlocked 이다. .. 더보기
WPF & C# - TextBoxWaterMark ( 워터마크 / 배경글자 / 텍스트박스 ) WPF & C# - TextBoxWaterMark ( 워터마크 / 배경글자 / 배경글씨 / 텍스트박스 / BackgroundText / 백그라운드텍스트 ) Text 삭제 private void tbx_TextChanged(object sender, TextChangedEventArgs e) { if (tbx.Text == "") tbk.Visibility = Visibility.Visible; else tbk.Visibility = Visibility.Hidden; } private void tbx_GotFocus(object sender, RoutedEventArgs e) { tbk.Visibility = Visibility.Hidden; } private void tbx_LostFocus(object.. 더보기
WPF & C# - 비동기 이벤트 - BackgroundWorker ( 백그라운드워커 / ChangedEvent / Completed / Event ) WPF & C# - 비동기 이벤트 - BackgroundWorker ( 백그라운드워커 / ChangedEvent / Completed / Event ) using System.Windows; using System.Threading; using System.ComponentModel; BackgroundWorker bw; private void btn_Click(object sender, RoutedEventArgs e) { bw = new BackgroundWorker(); bw.DoWork += new DoWorkEventHandler(bw_DoWork); bw.ProgressChanged += bw_ProgressChanged; bw.RunWorkerCompleted += bw_RunWorkerCo.. 더보기
WPF & C# - 멀티쓰레딩 ( 멀티쓰레드 / MultiThread / Threading ) WPF & C# - 멀티쓰레딩 ( 멀티쓰레드 / MultiThread / Threading / 스레드 ) private void btn_Click(object sender, RoutedEventArgs e) { lbl.Content = ""; Thread thread1 = new Thread(new ThreadStart(Thread1)); Thread thread2 = new Thread(new ThreadStart(Thread2)); thread1.Start(); thread2.Start(); } void Thread1() { for (int i = 0; i < 10; i++) { Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate { l.. 더보기
크롬 단축키 ( Chrome / 탭 전환 / 탭 전환 역방향 / 탭 복사 / 탭 이동 / Tab 다시열기 ) WPF & C# - 크롬 단축키 ( Chrome / 탭 전환 / 탭 복사 / 탭 이동 / Tab 다시열기 ) 탭 복사 : Alt +D + Enter 탭 전환 : Ctrl + Tab 탭 전환 역방향 : Ctrl + Shift + Tab 탭 이동 : Ctrl + 숫자키 닫은 탭 다시 열기 : Ctrl + Shift + T 더보기
WPF & C# - Error 다른 스레드가 이 개체를 소유하고 있어 호출한 스레드가 해당 개체에 액세스할 수 없습니다 ( 에러 / 쓰레드 / Thread / Dispatcher.Invoke()) WPF & C# - Error 다른 스레드가 이 개체를 소유하고 있어 호출한 스레드가 해당 개체에 액세스할 수 없습니다 ( 에러 / 쓰레드 / Thread / Dispatcher.Invoke()) ' 다른 스레드가 이 개체를 소유하고 있어 호출한 스레드가 해당 개체에 액세스할 수 없습니다 ' 위 에러의 경우 UI를 담당하는 스레드가 아닌 다른 스레드가 UI 를 건드릴 때 발생함. ( Cross-thread 라고 함 ) Dispatcher.Invoke() 사용하여 해결하면 된다고 함. using System.Windows.Threading; Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate { //your code })); [출처] [WPF.. 더보기