블로그 이미지
평강왕자

카테고리

분류 전체보기 (35)
Programming Lv1 (32)
MFC (16)
Java (1)
C# (6)
Web (0)
DataBase (0)
WPF + Blend (8)
Qt (0)
Programming LV2 (0)
취미 (3)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

Monitor 사용법

Programming Lv1/C# / 2013. 6. 14. 14:33

C#클래스에 Monitor라는 클래스가 존재한다.

Lock기능을 하는 클래스라고 저는 이해하고 있지만 짧은 소견으로 말하는거니 궁금하신분들은 아래링크를 참조;;

http://msdn.microsoft.com/ko-kr/library/hf5de04k(v=vs.95).aspx

http://msdn.microsoft.com/ko-kr/library/system.threading.monitor.aspx

사용법은 비교적 간단하다.

Enter 집어넣는다. Exit꺼낸다.

Wait로 묶어 놓는다. Pulse로 풀어준다.

저는 이런식으로 이해하고 있지만 좀더 명쾌하지 못한점은 아직 공부가 부족하니 조언부탁드립니다.

차후 더 공부하게 되면 업데이트 시키겠습니다.(게으르지만;)

매우 간단한 코드를 만들어 보았다;;

생성하자 마자 Thread를 생성하여 Thread안에서 다시 Timer Thread를 만들어서 5초뒤에 Pulse를 호출하여

Wait상태를 풀어주는 코드이다.

public MonitorTestClass()
{
    ThreadPool.QueueUserWorkItem(MessageClick);
}

public void MessageClick(object obj)
{
      lock (this)
     {
          ThreadPool.QueueUserWorkItem(MonitorLockClear);
          Monitor.Wait(this);
          MessageBox.Show("Message Aleart");
      }
}

void MonitorLockClear(object obj)
{
     int count = 0;
     while (true)
     {
          Thread.Sleep(1000);
          if (count == 5)
          {
               count = 0;
               lock (this)
              {
                   Monitor.Pulse(this);
               }
          }
          count++;
      }
}

주로 Monitor는 Msdn 샘플 코드에서도 Queue를 들고 있을정도로 Queue 관리에서 많이 사용하는 것 같다.

저도 Queue에서 사용하려고 Lock함수를 찾아보던 중에 찾게됐으니;;

무작정 Queue를 쓰면 메모리가 너무 많이 올라가서 컴퓨터가 멈춰버리는 현상이 발생해서

큐에 집어넣는 부분을 Wait걸어줄 필요성을 느껴서 찾게 되었다.

차후에 공부를 더한후에 업데이트 시키겠습니다.

'Programming Lv1 > C#' 카테고리의 다른 글

OpenFileDialog 파일 선택창  (0) 2013.04.10
C# partial class  (0) 2013.01.30
c# enum 사용하기  (0) 2013.01.30
C# 2차원 배열선언  (0) 2011.07.21
C#에서 컨트롤 이동시 스크롤 위치계산하여 상위부터 표시  (0) 2011.07.21
Posted by 평강왕자
, |

C#의 OpenFIleDialog 클래스는 파일선택 창을 지원한다.

기본 사용법은 아래와 같다.

OpenFileDialog oFileDlg = new OpenFileDialog();

            if (oFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                //처리부분
            }

이렇게 사용하면 아마도 파일 선택을 *.* 로 될것이다.

이러한 경우 자기가 원하는 파일들만 표시해야 하는 경우가 있을경우 아래와 같이 사용하면 편리하다.

OpenFileDialog oFileDlg = new OpenFileDialog();

            oFileDlg.Filter = "All(*.*)|*.*|Text(*.txt)|*.txt";
            if (oFileDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                //처리부분
            }

이런 방식으로 사용하면 콤보박스에 *.*, *.txt 두가지가 생긴다.

'Programming Lv1 > C#' 카테고리의 다른 글

Monitor 사용법  (0) 2013.06.14
C# partial class  (0) 2013.01.30
c# enum 사용하기  (0) 2013.01.30
C# 2차원 배열선언  (0) 2011.07.21
C#에서 컨트롤 이동시 스크롤 위치계산하여 상위부터 표시  (0) 2011.07.21
Posted by 평강왕자
, |

C# partial class

Programming Lv1/C# / 2013. 1. 30. 11:26

c#을 하면서 처음으로 오!! 좋다!! 신기하다!! 괜찮다!! 라고 느낀것이 partial class다..

내가 이해한건 하나의 하드디스크를 파티션 나눠서 c:\, d:\ 만들어서 c:\에는 OS, d:\에는 데이터 이런식으로 사용하는 느낌?

하나의 클래스에 기능이 많이 들어가는 경우 코드가 길어지고 복잡해 지는데.. (물론, 따로 클래스 만들어서 관리 하는 방법도 있지만)

기능별로 나눠서 쓸수 있다..

DataManager라는 클래스를 만들어서 사용하는데 영상데이터, 이미지데이터, 음성데이터 이렇게 3가지가 있는 경우에 하나의 클래스에

전부 집어 넣기에는 관리하기 힘들고, 그렇다고 클래스를 3개로 나누자니 복잡해 지는것 같고 이럴 때가 종종 있었는데.

partial을 사용하면 하나의 클래스에 파일만 여러개가 되어서 관리 할 수 있다.

편리한건 영상데이터는 이제 사용하지 않을때 그 파일만 삭제하면 되니 일일히 찾아다닐 필요도 없다. ㅎㅎ

사용법은 아래와 같다.

파일명은 그냥 지으면 된다. DataManager.cs, DataManager.Movie.cs, DataManager.Image.cs, DataManager.Voice.cs

저는 이렇게 사용함 영어에 무지 약함;;

소스코드 안에 아래 내용을 넣어주면 된다.

namespace Data
{
    public partial class DataManager
    {
        //내용
    }
}

namespace, class명을 동일하게 맞춰줘야 하고 클래스 부분 앞에 partial 이라고 붙여 줘야 한다.

생성자는 DataManager.cs부분에만 존재 하면 된다. 전부다 넣을 필요 없다. 각자 사용 용도에 맞게 소스 내용을 집어 넣으면 된다.

별거 아닌 내용인데 글이 길었네요;;

 

'Programming Lv1 > C#' 카테고리의 다른 글

Monitor 사용법  (0) 2013.06.14
OpenFileDialog 파일 선택창  (0) 2013.04.10
c# enum 사용하기  (0) 2013.01.30
C# 2차원 배열선언  (0) 2011.07.21
C#에서 컨트롤 이동시 스크롤 위치계산하여 상위부터 표시  (0) 2011.07.21
Posted by 평강왕자
, |

c++ 처럼 #define이 c#에는 없다.

#define의 기능중에 자주 사용하던 기능이 문자열, 숫자를 정해놓고 변수로 불러 사용했었다.

나름 혼자 코드에 빨강색 들어가는것 싫어해서;; 중복되게 사용되면 찾아다니면서 바꿔주는 것도 귀찮고;;

c#을 하면서 #define이 사라져서 좌절 (OTL) 그래서 찾아보니 enum이라는 형식이 존재 한다.

약간 구조체? 라고 이해하면 될려나;;

사용법은 일단

public enum test {변수1, 변수2, 변수3, 변수4 };

위와 같이 사용하면 변수1에는 자동으로 0, 변수2에는 1, 변수3에는 2, 변수4에는 3이 라는 값이 대입된다.

물론 아래와 같이 하나씩 정의 하면 그 값이 대입된다.

public enum test {변수1 = -1, 변수2 = 2, 변수3 = 5, 변수4 = 7 };

숫자는 이렇게 사용되고 문제는 문자열 저의 경우엔 한글;;

public enum test {사과, 귤, 배추, 무 };

위와 같이 쓰면 한글이 들어간다. 처음엔 당황스러웠다. 무슨 한글이 변수가 되지;; 단 띄워쓰기는 허용하지 않는다.

실 사용시에 아래와 같이 사용한다.

string str = "사 과";

if(str.Replace(" ", "").Equals(test.사과))
{
    //처리 함수
}

'Programming Lv1 > C#' 카테고리의 다른 글

Monitor 사용법  (0) 2013.06.14
OpenFileDialog 파일 선택창  (0) 2013.04.10
C# partial class  (0) 2013.01.30
C# 2차원 배열선언  (0) 2011.07.21
C#에서 컨트롤 이동시 스크롤 위치계산하여 상위부터 표시  (0) 2011.07.21
Posted by 평강왕자
, |

C++ 2차원 배열 선언

int data[2][3];

C# 2차원 배열 선언

int data[2,3];

C++과 다르게 ,(콤마)로 배열의 행을 구분한다.

'Programming Lv1 > C#' 카테고리의 다른 글

Monitor 사용법  (0) 2013.06.14
OpenFileDialog 파일 선택창  (0) 2013.04.10
C# partial class  (0) 2013.01.30
c# enum 사용하기  (0) 2013.01.30
C#에서 컨트롤 이동시 스크롤 위치계산하여 상위부터 표시  (0) 2011.07.21
Posted by 평강왕자
, |
컨트롤 이동시
 this.chart1.Location = new System.Drawing.Point( x , y );
이런식으로 이동하는데 스크롤을 하였을시에 이런식으로하면 혀내 화면의 좌측 꼭지점을 0,0으로 인식하여
스크롤을 위로 올리면 위에 화면이 비어버리는 현상이 발생한다.
그럴때 스크롤 값을 계산하여 이동

//세로 스크롤의 현재 값을 가져온다.
int verticalScroll = this.VerticalScroll.Value;

//현 화면의 좌측 꼭지점이 0,0 이므로 계산한 스크롤 사이즈 만큼 - 좌표값을 주게되면 현 화면의 전체 크기의 좌표에서 부터 계산하여 이동한다.
 this.chart1.Location = new System.Drawing.Point( -verticalScroll + x , y );

'Programming Lv1 > C#' 카테고리의 다른 글

Monitor 사용법  (0) 2013.06.14
OpenFileDialog 파일 선택창  (0) 2013.04.10
C# partial class  (0) 2013.01.30
c# enum 사용하기  (0) 2013.01.30
C# 2차원 배열선언  (0) 2011.07.21
Posted by 평강왕자
, |

최근에 달린 댓글

글 보관함