본문 바로가기

728x90
반응형

프로그래밍&IT/C#

(30)
Thread 관련 간단 정리1. Thread / ThreadStart / ParameterizedThreadStart 개인적으로 중요하다고 생각되는 Thread 관련 처리입니다. Thread 클래스 (System.Threading)단순한 쓰레드 생성 및 실행입니다.여기서 ThreadStart는 파라메터를 전달하지 않습니다. using System.Threading;namespace ConEx06{ class Program { static void Main(string[] args) { Thread t1 = new Thread(new ThreadStart(Run)); //델리게이트 타입으로 전달 t1.Start(); } //실행할 함수 public static void Run() { for(int i=0; i Sum(100, 100, 100)); //람다식 이용해서 전달할수도... t2.Start(); } static v..
Params 한정자, 매개변수 배열 Param; 함수에 가변적인 매개변수 전달시 배열로 전달배열은 이미 아신다는 전제하에... - 동일한 타입을 갖는 여러개의 매개변수를한개의 매개변수 (즉 배열)로 전달하는 역할입니다. double값의 가변적 매개변수를 받아서 평균을 구하는 함수를 구현해보겠습니다. namespace ConEx01{ class Program { static void Main(string[] args) { Console.WriteLine("Avg is {0}", CalcAvg(1.0, 2.0, 3.6, 4.0)); Console.WriteLine("Avg is {0}", Math.Round(CalcAvg(3.0, 4.0, 5.5), 3));// 소수점 3자리까지만 결과를 보여주기위해서 Math.Round 함수를 사용 } st..
[C#] Cross Threading 처리 : InvokeRequired 속성 UI 그리고 Thread 프로그래밍하다 간혹 "크로스 스레드" 문제를 부딪치게 되면서, Invoke 및 Control.InvokeRequired 속성을 알아보게 되었습니다. 스레드들에 대해 약간 보자면... - Thread Affinity(스레드 선호도) : 기본적으로 그 UI 컨트롤을 생성한 쓰레드만이 해당 UI객체를 접속 가능. - UI 스레드 : UI 컨트롤을 생성하고 이 컨트롤의 윈도우 핸들을 소유한 스레드 - Worker 스레드 : 이런 UI 스레드를 갖지 않는 스레드 예제 using System.Threading; namespace FrmEx10 { public partial class Form1 : Form { private Thread m_thread = null; public Form1(..
System.Threading 네임 스페이스 및 Thread클래스 관련 평소 나름 중요한 개념이긴한데,사실 시스템 운영할때는 Timer빼고는 그렇게 많이는 안 쓰긴 했음. System.Threading 네임스페이스 타입 타입 내용 Interlocked 다수의 스레드가 공유하는 타입에 대해 원자적(atomic) 작업 지원 Monitor lock 및 wait / signal 스레드 동기화 객체 제공 C#의 lock 키워드는 내부적으로 Monitor 타입 사용 Mutex 이 동기화 요소는 AppDomain 경계를 넘어서 동기화 수행하는데 사용 ParameterizedThreadStart 이 대리자는 메소드가 다수의 매개변수를 갖는 메소드를 호출할수있게 해준다 Semaphore 리소스, 특정 리소스 타입에 동시 접근할 수 있는 스레드의 수를 제한할수있게 해줌 Thread CLR 내..
C# System.Collections 인터페이스 & 클래스들 System.Collections 의 인터페이스 System.Collections 인터페이스 내용 ICollection 컬렉션 클래스의 일반적인 특징(읽기전용, 스레드 안전 등) 정의 IComparer 두 객체를 비교하는데 이용 IDictionary 객체가 내용을 이름/값 쌍을 이용해 나타내는데 이용 IDictionaryEnumerator IDictionary를 지원하는 객체의 내용을 열거하는데 이용 IEnumerable 주어진 객체를 위한 IEnumerator 인터페이스를 반환 IEnumerator foreach스타일의 반복처리를 지원하기위해 사용 IHashCodeProvider 개인화된 해시 알고리즘을 이용해 구현하는 형식에 대한 해키코드 반환 IList 객체 리스트에서 항목을 추가하고 제거하고 색인..
C# DataTable에서 Datarow 핸들링, Add select Update Delete DataTable에서 추가, 조회, 갱신, 삭제하기.개인적으로 다시 한 번 정리하는 차원에서 블로그에 올립니다. namespace conEx02{ class Program { static void Main(string[] args) { //DataTable생성 DataTable dt = new DataTable("Test"); //Data Column 추가 dt.Columns.Add("ID"); dt.Columns.Add("NAME"); // 새로운 row를 추가하기 DataRow dr = dt.NewRow(); dr["ID"]="111"; dr["NAME"] = "AAA"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["ID"]="222"; dr["NAME"]="BBB"; dt...
C# 에서 정규표현식 - Regex.IsMatch 이용 .Net C#에서 정규표현식 사용하기간혹 구문의 패턴이나 분석할때 정규표현식을 써야할 때가 존재하더군요. using System.Text.RegularExpressions; Regex.IsMatch( 분석할 구문, 패턴 [, 옵션] ); 여기서, match위한 패턴정보 입력하는걸 퍼왔습니다. 1. '.' 임의의 한 문자 ex) s.e -> sae, sbe, sce, sde ... .ce -> ace, kce, dce ... 2. '*' 바로 앞의 문자가 없거나 하나 이상 ex) s*e -> e, se, see, ssse ... abc* -> ab, abc, abcc, abccc ... h*im -> im, him, hhim, hhhim ... 3. '+' 바로 앞의 문자가 하나 이상 ex) s+e -> ..
C# - XML 작성 기본 XML 작성 IT하다보면 XML과 관련된 일이나 업무가 많을텐데이상하게 제가 직접 작성한다던지 (Config 말고) 뭔가 직접 작업하는건 없는듯하네요... 2가지의 방법을 서술합니다.기본적으로 XmlDocument로 기본 뼈대(?) 객체를 생성후이 뼈대에 Element들을 계속 붙여나가는 방식 이라 하면 될까나? using System.Xml; static void BuildXml() { XmlDocument doc = new XmlDocument(); //Document 객체 인스턴스 XmlElement inventory = doc.CreateElement("Root"); XmlElement car = doc.CreateElement("A"); car.SetAttribute("ID", "1000"); ..
this의 3가지 용법 체크 C#, this의 3가지 용법. this. 말그대로 '이것'을 나타낸다고 보면 될것같네요1) 자신의 멤버를 가리키는 thisthis만 치면 해당 클래스의 멤버변수들 쉽게 보고 타이핑이 가능하기에 개인적으로 많이 썼던 방법입니다.Ex) class Exam{private int iVarprivate string strVar;public string strVar1;protected string strVar2; public Exam() {this.iVar = 100;this.strVar="Private1";this.strVar1="Public";this.strVar2="Protected";}} 2) 클래스를 반환하는 this동일한 객체 인스턴스를 가리키게 됩니다.Ex)namespace Con_Ex05{class..
코드 리팩토링(refactoring) 관련 & 메소드 추출하기 VIsual Studio2010에서 제공하는 (아마 그 이상에서도 제공될듯...)코드 리펙토링 관련하여서 대략적인 내용은 아래와 같습니다. 리펙토링 기술 의미 이름 바꾸기 프로젝트 전체에 걸쳐서 코드 토큰 (메소드 이름, 필드 , 지역변수 등) 의 이름을 변경 메소드 추출 선택된 코드 구문ㅇ르 기초로 새로운 메소드 정의 필드 캡슐화 Public 필드를 C# 속성으로 캡슐화된 private 필드로 변경 인터페이스 추출 기존 타입 멤버를 기초로 새로운 인터페이스 타입을 정의 매개변수 제거 해당 매개변수를 메소드의 매개변수 목록에서 제거한다 매개변수 다시 정렬 멤버 매개변수의 순서를 변경 그중에서 "메소드 추출" 예제입니다.어떤 코딩을 작성했는데,다른 곳에서도 쓰일 가능성이나 쓰고 싶을때,일일이 메소드를 만들..

반응형