본문 바로가기

Programing (프로그래밍)/WPF & C# (C Sharp)

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.. 더보기
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.. 더보기
WPF & C# - 열행 맞추어 Grid 생성하기 ( makeGrid / ColumnDefinitions / RowDefinitions ) WPF & C# - 열행 맞추어 Grid 생성하기 ( makeGrid / ColumnDefinitions / RowDefinitions ) MainWindow.xaml MainWindow.xaml.cs public MainWindow() { InitializeComponent(); Init(); } void Init() { // Grid + Label 추가하기 int numGrd = 0; // grid 갯수 for (int row = 0; row < 26; row++) { // 세로 행 생성 bgGrd.RowDefinitions.Add(new RowDefinition()); for (int col = 0; col < 10; col++) { // 가로 열 생성 if (row == 1) bgGrd.Colum.. 더보기
WPF & C# - 비동기 async / await ( UI와 연산 분리 / 작업 후 결과값 리턴 방식 ) WPF & C# - 비동기 개념익히기 ( async / await ) string str; private void Btn_Click(object sender, RoutedEventArgs e) { btn.Content = "잠시만 기다려 주세요"; AAA(); } private async void AAA() { btn.Content = await BBB(); } private Task BBB() { return Task.Factory.StartNew(() => CCC()); } private string CCC() { for (int i = 0; i 별도 업무요청 후 결과만 보고.. 더보기
WPF C# - 함수 - GetDropFiles 드래그앤드랍 파일 가져오기 (drag&drop) private void Grid_Drop(object sender, DragEventArgs e) { List lstFile = GetDropFilesPaths(e); lbl.Content = ""; foreach (string s in lstFile) { lbl.Content += s + "\n"; } } /// /// GetDropFilesPaths 드랍파일 가져오기 /// /// DropData /// DropFiles private List GetDropFilesPaths(DragEventArgs e, bool deduplication = false) { string[] eDataFiles = (string[])e.Data.GetData(DataFormats.FileDrop); List lstFi.. 더보기
[자작] WPF & C# SearchList_Regex ( Regex Patten Serch 자동차 번호판 영업용 차량 LPR ANPR ) 패턴으로 검색하는 방법이다. 회사프로그램의 로그에서 특정 값을 추출하기 위해서 만들었다. 좀 더 다듬어서 파일별로 패턴을 몇가지 저장하고 선택하는 방법 등등 만들면 좋을듯하다. 항상 바빠서 문제지만... ㅠㅠ ( 소스가 지저분하고 넘 민망해서 디버그파일만 제공합니다. ㅠㅠ ) [참고] ② 이륜자동차번호판은 가ㆍ나ㆍ다ㆍ라ㆍ마ㆍ바ㆍ사ㆍ아ㆍ자ㆍ차ㆍ카ㆍ타ㆍ파ㆍ하를 용도별 기호로서 표시한다. https://www.law.go.kr/행정규칙/자동차등록번호판등의기준에관한고시/(2022-89,20220218)/제5조 자동차등록번호판등의기준에관한고시 www.law.go.kr 제6조(관할관청 기호표시) 관할관청의 기호표시는 다음과 같이 한다. 다만, 비사업용 및 대여사업용 자동차에 부착하는 등록번호판에는 관할관청의 기호표.. 더보기
[자작] WPF&C# PACL 멀티캠뷰어 헬퍼 ( MultiCamViewer Helper ) PACL 멀티캠뷰어 헬퍼 ( MultiCamViewer Helper ) 사이즈를 좀 더 쉽게 조절하기위한 프로그램 가운데는 45px, 형광색은 55px 이다. 종료전 사이즈를 기억한다. 더보기