C#
-
C# 우선순위 큐, Priority queue닷넷/C# 2018. 11. 7. 18:30
큐랑 스택을 섞어 쓸 방법이 어디 없을까 구글링해보다가 우선순위 큐라는 걸 알게 되었다. 학창시절, 자료구조 과목에선 안 배웠던 것 같은데.. 우선순위 큐란, 위키백과에 따르면 각 원소들이 우선순위를 가지며 높은 우선 순위를 가진 원소가 낮은 우선순위를 가진 원소보다 먼저 처리되고, 만약 두 원소가 같은 우선순위를 가진다면 큐에 의해서(저장된 순서대로) 처리 되는 자료구조를 말한다. 개념을 알았으면 구현을 할 차례! 큐나 스택은 Queue와 Stack이라는 (이름 그대로 알 수 있는) 클래스가 있어서 쉽게 구현할 수 있었으나 우선순위 큐는 그런 클래스가 존재하지 않았다. C#에서는 우선순위 큐를 어떻게 구현할 수 있을까? 힌트는 위키백과에서 찾을 수 있었다. 그렇게 스스로 구현하기 위해 코드를 작성하다가..
-
C# JSON POST and GET (정보 전달 및 확인)닷넷/C# 2018. 11. 2. 10:04
/* url = http://10.0.0.1 웹서버 주소 lblUrl.Text = { "key1":"value1", "key2":"value2", "key3":"value3" } JSON 문자열*/// JSON POST (정보 전달)private void JPOST(){ try { // JSON 데이터 전송 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.ContentType = "application/json"; request.Method = "POST"; using (StreamWriter stream = new StreamWriter(request.GetRequestStream())) { stream.Write(lbl..
-
C# JSON 파싱하기닷넷/C# 2018. 10. 31. 12:11
2023.04.04 - [C#] - C# JSON 파일 읽기/쓰기 (Deserialize/Serialize) 비주얼스튜디오에 Newtonsoft.Json을 설치했다는 가정하에 c#에서 Json 파싱하는 법을 작성하도록 하겠습니다. 아직 설치 하지 못한 분은 아래 글에서 설치하기를 따라하시면 됩니다. 2018/10/26 - [프로그래밍/C#] - C# Json 파싱하기 전, 비주얼스튜디오 프로젝트에 Newtonsoft.Json 설치하기 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 using Newtonsoft.Json.Linq; private void JsonParse() { using (WebClient wc = n..
-
C# Json 파싱하기 전, 비주얼스튜디오 프로젝트에 Newtonsoft.Json 설치하기닷넷/C# 2018. 10. 26. 16:31
짤막 상식JSON이란? JSON (JavaScript Object Notation)은 사람이 읽을 수 있는 데이터로 교환하기 위한 표준 디자인입니다. JSON은 트리 구조로 작동하며 비교하자면 XML처럼 보이는데 XML보다 더 짧고 사용하기가 쉽습니다. JSON과 XML 구조 비교 JSON XML { "companys":{ "company1":"company name", "company2":[ { "name":"comany2 name" }, { "address":"seoul" }, { "tel":"012-3456"} ] } } company name comany2 name seoul 012-3456 Newtonsoft.Json 설치하기 1. 도구에 NuGet 패키지 관리자 > 솔루션용 NuGet 패키지 ..
-
C# (Windows 작업스케줄러를 사용하지 않기 위한...) 특정시간마다 이벤트를 실행시키는 방법닷넷/C# 2018. 10. 19. 11:49
Windows 작업 스케줄러를 이용하지 않고 특정 시간에만 이벤트 또는 메소드를 실행하게 할 수 있는 방법이 없을까 검색해보다가 특정 시간을 계산해서 그 시간에만 이벤트를 실행하는 방법을 찾았다. 예제 코드는 매일 새벽 3시에 이벤트를 실행시키는 타이머이다. 2022-04-22 16:45 현재 시간으로 부터 runAt까지의 남은 시간을 구해서 그 뒤에 타이머가 실행되게 하고 그 다음에는 매 24시간마다 한 번씩 실행 되게 하는 코드이다. 이때, "시"만을 기준으로 하다 보니 딱 3시 마다를 원하면 프로그램도 정각에 실행시켜야 하는 단점이 있어서 시 뿐만 아니라 분, 초 또한 현재시간에서 runAt까지 남은 분, 초도 같이 계산 될 수 있게 예제 코드를 수정 한다. using System.Timers; p..
-
C# [펌] 윈도우 Timer와 스레드 Timer의 차이점 및 사용할 때 주의할 점닷넷/WinForms 2018. 10. 1. 11:55
[출처: http://ccambo.blogspot.com/2013/03/c-timer.html] C# 에서 Timer 사용할 때 주의할 점. 예전에 알고 지내시던 분의 질문을 받았다. Windows Forms 개발을 하는데, 주기적 (대략 1분)으로 데이터 요청을 하는 프로그램을 작성하기 위해서 Timer 를 사용하는데, 어떤 기능을 처리해야 하기 때문에 Sleep 을 같이 사용했다고 한다. 여기서 발생하는 문제는 Sleep 5초를 주었더니, Timer 까지 5초 동안 멈춘다는 것이다. Timer 라는 것은 기본적으로 시간의 흐름을 측정하는 기능이기 때문에 Sleep 을 했다고 해서 Timer 가 멈추는 일은 생겨서는 안된다. 그러나 실제 샘플을 만들어 보면 ... Timer 가 Sleep 만큼 동작이 ..
-
C# [펌] TCP/IP환경에서 메시지 교환 원리닷넷/C# 2018. 8. 30. 18:22
TCP/IP환경에서 메시지 교환 원리2016.04.28 06:03 from 프로그래밍 일반/개발 도구 사용법 http://foranie0.tistory.com/199TCP/IP환경에서 메시지 교환 원리1. 서두 질문글 답변글 서버 플머가 아니라서 이런 것까지 정리할 생각은 없었는데 어제 술 마시다가 조상현 교수님이 만든 엔진에는 프로토콜 넘...foranie0.tistory.com1. 서두질문글답변글서버 플머가 아니라서 이런 것까지 정리할 생각은 없었는데 어제 술 마시다가 조상현 교수님이 만든 엔진에는 프로토콜 넘버를 기준으로 일일이 switch case 해주는 부분 없이 상속으로 처리 했다는 이야기를 듣고 소스를 까보는 김에 이것까지 작성 하게 되었다. (와중에 내 코드 일부가 틀린 것이 생각 나기도 ..
-
C# MDI폼의 자식폼 최대화시 메뉴바에 나타나는 아이콘 없애기닷넷/WinForms 2018. 8. 20. 18:01
C#에서 하나의 메인폼을 MDI 폼으로 만들어 부모폼으로 만들고, (부모폼에는 메뉴바가 있다.)여러 개의 폼을 자식폼으로 해서 창크기를 최대화로 하면메뉴바에 아이콘이 생긴다. 이 아이콘이 내가 설정한 거로 안 나오고, C# 윈폼 기본 아이콘으로 나오니까 보기가 싫다.고객사 납품용인데 프로그램이 없어보인다. 흐규흐규 그래서 찾아낸 방법!!!! 폼 속성창에서 ControlBox를 True에서 False로 하니까 잘 된다. 메뉴바에 자식폼 아이콘이 사라졌다. 오오
-
C# 숫자 세자리마다 콤마(쉼표)찍기닷넷/C# 2018. 8. 2. 16:51
C#에서 숫자 세자리마다 콤마(쉼표)찍는 방법 다음은 C#에서 숫자를 문자열로 바꾸고, 세자리 마다 콤마(쉼표)가 입력되게 하는 방법이다. int i = 100000000; string number = string.Format("{0:#,###}", i); 결과: 100,000,000 그런데 여기서 만약 i가 0 또는 null이라면 값이 공백으로 나온다. int i = 0; string number = string.Format("{0:#,###}", i); 결과: 공백이 아닌 0으로 나오게 하려면 다음과 같이 하면 된다. int i = 0; string number = string.Format("{0:#,##0}", i); 결과: 0
-
C# DataGridView 엑셀 출력 빠르게 하기 (복사&붙여넣기)닷넷/WinForms 2018. 7. 20. 16:13
이전에 포스팅한 2017/05/24 - [프로그래밍/C#] - C# DataGridView 데이터 엑셀파일에 저장 using oledb 은 데이터그리드뷰의 데이터를 엑셀파일로 출력할 때 속도가 느리다는 단점이 있다. 어떻게 하면 빠르게 출력할 수 있을까... 데이터그리드뷰 자체를 복사해서 엑셀파일에 그대로 옮겨놓을 수 있을까... 하다가 찾아낸 방법이다. 아래의 ExportExcel 메소드를 사용하면 된다. private void ExportExcel(string filename) { // Copy from DataGridView // 데이타그리드뷰를 전체선택하고, dataGridView1.SelectAll(); // 클립보드에 복사한다. DataObject dataObj = dataGridView1.G..
-
C# 폼 캡처, 자식 폼 캡처닷넷/C# 2018. 7. 18. 09:53
아래 ScreenCaptureForm 메소드를 사용하면 쉽게 폼을 캡처 할 수 있다.아래 메소드를 사용할 때 폼의 시작위치와 폼 사이즈만 넘겨주면 되는 것이다.private void ScreenCaptureForm(Point _point, Size _size){ Rectangle rectangle = new Rectangle(_point, _size); Bitmap bitmap = new Bitmap(rectangle.Width, rectangle.Height); Graphics g = Graphics.FromImage(bitmap); g.CopyFromScreen(rectangle.Left, rectangle.Top, 0, 0, rectangle.Size); bitmap.Save(@"C:\test.pn..
-
C# goto문 작성방법닷넷/C# 2018. 6. 28. 17:01
goto는 프로그램의 흐름을 바꾸는 명령으로 어떤 상황일 때 코드의 특정부분으로 가서 동작하게끔 할 수 있습니다. 코드의 흐름을 비직관적으로 만들 수 있고, 디버깅과 유지보수를 어렵게 할 수 있으므로 goto문을 쓰지 않는 걸 권장 받아 왔고 그렇게 교육 받아 왔지만 잘 쓰면 약이고, 잘못 쓰면 독약인 것처럼 goto도 그러하기 때문에 현재 시점에서는 용도에 맞게, 의도에 맞게 잘 쓰면 아무런 문제도 되지 않습니다. 단, 이게 무슨 용도로, 의도로 쓰였는지 주석은 꼭 달아주도록 합시다! goto문 작성방법 1. 레이블(label)을 정의합니다. 레이블은 코드 내의 특정 위치를 식별하는 식별자입니다. 레이블은 콜론(:)으로 끝나는 형식으로 작성됩니다. 2. goto 키워드 뒤에 이동하려는 레이블 이름을 지..
-
C# SqlDependency 사용 중에...닷넷/C# 2018. 6. 21. 16:01
아래 사이트의 설명이 너무 좋으므로 따로 설명은 하지 않는다.http://www.csharpstudy.com/DevNote/Article/11 대신에 위 사이트 설명에서 추가하고 싶은 내용. [SQL] 문을 어떻게 써야하는지에 대한 몇가지 제약 조건들 중에 하나 1. where절이나 order by 등에 나오는 칼럼타입이 DateTime이면 invalid 뱉어냄.따라서 Convert(varchar(10), MachineTime, 120) 이런 식으로 칼럼 타입을 변경하여 쿼리를 짜야 한다.