반응형

개발 114

C#클래스 분리

아주 간단한 예제.버튼을 누르면 테스트 박스에 "테스트"란 글씨가 뜬다. 그런데. 윈도우 폼 형태의 프로젝트에서는 UI 즉 버튼이나 텍스트 박스같은 것들은 모두 private로 잡히기 때문에모든 코드를 Form1.cs에서 작성해야 한다. 나처럼 C를 오래 했던 사람들이나 소프트웨어 구조(아키텍쳐)를 배운 사람입장에서는 도무지 용납이 안된다.왜냐 유지 보수 차원에서라도 모든 코드를 Form1.cs에 때려 박으면 재사용이 일단 안된다. 어디에 무슨 코드가 있는지 코드 줄이 길게 되면 연관된것끼리 묶는다 해도 이건 아닌거다. 그래서. 간단한 예제를 만들어봤다.button1과 textbox1은 form1.Designer.cs에 만들어져 있고, form1.Designer.cs와 form1.cs는 partial로 ..

개발/C# 2017.12.26

C#에서 dll import 하기

C#에서 사용하기C++로 만든 dll은 기존의 C#의 dll을 사용하던 것 처럼 reference에 추가해서 사용하실 수 없습니다. 그래서 코드에 직접 , 사용한다고 선언해주고 사용하여야 합니다.먼저, C++을 이용해서 만든 dll을 필요한 위치에 위치 시킵니다. 저같은 경우 실행파일과 같은 위치에 위치하였습니다. (*) 그런 뒤 ,1 ) using System.Runtime.InteropServices; NameSpace를 추가한 후 2 ) [DllImport("TestLib.dll")] 를 이용하여 사용할 Dll을 명시한 후 사용할 함수를 선언합니다. (* 실행파일과 같은 위치에 있으면 dll의 이름만 쓰시면 됩니다. 아닌경우 주소까지 같이 명시) 3) 그리고 그냥 함수처럼 사용하시면 됩니다. usi..

개발/C# 2017.12.14

C# 폼간에 전역변수 사용하기

Form1와 Form2를 만들었거든요.Form1에 값을 Form2에 넘겨서 Form2에 있는 다이얼로그박스에있는 버튼을 누르면 Form1에서 넘겨준값을 뿌려주는 간단한 프로그램입니다. Form2안에 get,set 코드를 심어주면 잘 되는데.그렇게 하지않구 Data.cs라는 클래스를 하나 만들어서거기에 get_set을 넣었습니다.어떻게 호출하면 되는지요?아래와같이 작성했는데 왜 값이 Form2에 안넘어가는지 모르겠네요. /**********Form1.cs***********************/private void button1_Click(object sender, EventArgs e) { Form2 Frm2 = new Form2(); Data a = new Data(); a.Ct = "안녕하세요";..

개발/C# 2017.12.14

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
반응형