개발 110

c# 쓰레드2

지난 시간엔 Invoke를 사용하여 오래걸리는 작업에 대한 결과를 UI 멈춤 없이 표현하는 방법을 포스트했다. 이런 기능을 통해 데이터베이스에 연결, 조회, 수정과 같은 작업이나, 네트워크 통신에 대한 연결, 송신 및 수신 작업에 대해 다른 스레드로 두고, 그 상태나 결과에 대해 UI에 표현하여, 사용자의 요청에 지체없이 응답할 수 있는 프로그램을 개발하는데 응용할 수 있다. :-)그러나 때론 UI 자체에서 큰 작업을 진행되는 경우가 있다. 가령 대용량으로 조회된 데이터를 하나의 표(Table) 컨트롤에 표현한다거나, 다량의 데이터를 차트(Chart)로 표현하는 등 표현할 데이터에 의해 수반된 Control 생성인데, 이런 처리는 데이터를 분할하여 반복문을 통해 Invoke를 반복호출하는 기교(技巧)가 ..

개발/C# 2017.12.07

c# 쓰레드

오랜 시간이 걸리는 작업에 대해선 Thread를 생성하여 처리하는 것은 어느 프로그램이나 마찬가지일 것이다. C# 기반 프로그램도 예외는 아니다. 만일 Thread 없이 만들면 어떻게 될까? Thread를 선언하지 않은 상태에서 아래와 같은 프로그램을 만들어보았다. 해당 프로그램은 입력한 수 x 만큼 2를 더하는 프로그램. 즉, x*2를 덧셈만으로 계산하는 프로그램이다. [그림 1] 입력한 수 x 만큼 2를 더하는 프로그램 다음 프로그램의 소스는 아래와 같다.using System;using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System...

개발/C# 2017.12.07

Thread를 이용한 윈폼 프로그래밍 (크로스 스레딩)

Thread의 개념적인 부분은 넘어가기로 하겠습니다 지금 부터 설명할 것은 C# 윈폼에서의 다중 쓰레드를 이용하여 컨트롤들을 조작하는 내용입니다. 평소에 가장 보기 쉬운 윈폼 다중 쓰레드 프로그램은, 프로그램이 업데이트 하는 업데이트 폼이 아닐까 싶습니다. 업데이트 폼은 보통 프로그래스바를 이용하여 작업 진행상황을 보여주고 밑에 취소 버튼등이 있죠.! 만약 이걸 단일 쓰레드로 한다면, 업데이트 작업이 완료될동안 즉 프로그래스바가 완료 될때 까지 취소버튼을 누를수 없는 먹통이 될것으로 예상합니다. 단일 쓰레드는 업데이트를 받으면서 프로그래스바를 값을 계속 변경해줘야 하기 때문에 취소 버튼의 이벤트를 받을 수 없을테니까요. 예로써 간단하게 실험을 해보았습니다. 일단 간단하게 폼에 프로그래스바 1개와 버튼을 ..

개발/C# 2017.12.07

RS232 드라이버없이 통신하기.

회로설명 들어갑니다. 1. DB9의 7핀은 +12V의 출력핀입니다.(RTS? DTR? 기억이 가물하네요) 통신프로그램하시는 분한테 이포트 열어달라고 하세요 아니면 direct로 VDD물려도 통신은 됩니다(약 5미터정도) 2. 마이컴의 RxD는 바이어스가 VDD로 잡혀있기 때문에 TTL 레벨로 받습니다. 3. 마이컴의 TxD도 TTL레벨로 나가고 컴퓨터의 RxD는 컬렉터의 저항에 입력되는 전압에 의해 좌우됩니다.(이런걸 open collector type이라고 하져) 4. D4의 다이오드는 역전압 방지용 브락킹이죠( GND --> -12V) 귀찮으면 없어도 됩니다. 다시 말하지만 +12V 로 바이어스 안잡아주고 보드의 전원으로 잡아줘도 통신 충분히 가능합니다. (3가닥선으로 통신을 하려면) 그리고 팁으로 ..

개발 2017.11.22