본문 바로가기

[2]SW Development Note/[2-1.2]C#24

DevExpress WizardControl 사용시 유의 사항. DevExpress WizardControl 사용시 유의 사항. NextClick 이벤트를 처리 할 경우 " e.Handled = true;" 를 wizardControl1.SelectedPage = wizardPage2; 구문 아래 기입해야 한다. private void wizardControl1_NextClick(object sender, DevExpress.XtraWizard.WizardCommandButtonClickEventArgs e) { if (e.Page == wizardPage1) { switch (radioGroup1.EditValue.ToString()) { case ("ToPage2"): wizardControl1.SelectedPage = wizardPage2; e.Handled .. 2021. 5. 4.
비동기적으로 파일을 처리하는 방법 비동기적으로 파일을 처리하는 방법을 이해하기 위해 다음 단계를 수행한다. using System; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Chapter9.Recipe1 { internal class Program { static void Main(string[] args) { var t = ProcessAsynchronousIO(); t.GetAwaiter().GetResult(); } const int BUFFER_SIZE = 4096; async static Task ProcessAsynchronousIO() { using (var stream = new FileStrea.. 2021. 4. 29.
선택된 저장장치에서 특정 확장자 검색 및 파일 액세스 거부 문제 파일 확장명 가져오기 선택된 저장장치에서 특정 확장를 검색. Part1. 아래와 같이 간결하게 파일 확장자 명을 가져 올수있다. xmlFilePath = Directory.GetFiles(Threadviews.sourceDir, "*.xml",SearchOption.AllDirectories); 하지만 아래 와 같이 가져오게 되면 문제 점이 하나 발생되는데,xml 확장자만 가져오는데, 만약 xml 확장자 뒤에 문자가 붙는다면 그것 또한 확장자로 인식해 가져온다. 더보기 ".Txt"와 같은에 별표 와일드 카드 문자를 사용 하는 경우 searchPattern * 지정 된 확장의 문자 수는 다음과 같이 검색에 영향을 줍니다. 지정 된 확장의 길이가 정확히 3 자인 경우 메서드는 지정 된 확장명으로 시작 하는 .. 2021. 4. 29.
WMI Queries for Hardware Sheet ware Type WMI Remarks Namespace Class Filter BIOS root/CIMV2 Win32_BIOS CPU root/CIMV2 Win32_Processor Harddisk root/CIMV2 Win32_DiskDrive Physical disks Win32_DiskDriveToDiskPartition Partitions on disks Win32_DiskPartition Partitions Win32_LogicalDisk Volumes Win32_LogicalDiskToPartition Volumes in partitions Harddisk Controller root/CIMV2 Win32_IDEController IDE & SATA Win32_SCSIController SC.. 2021. 1. 20.
스레딩 | System. Threading.Thread System. Threading.Thread 프로그램이 실행되면 주 스레드가 하나 기본적으로 생성된다. 주 스레드는 컴파일된 C# 코드를 순차적으로 실행해 나간다. 즉, 지금까지 실습한 모든 예제는 주 스레드가 하나 생성되어 실행된 것이다.그스레드의 존재를 확인할 수 있을까? Thread 타입에는 현재 명령어를 실행 중인 스레드 자원에 접근할 수 있는 정적 속성을 제공한다. 이를 활용하면 다음의 코드처럼 프로그램을 실행하고 있는 스레드의 상태를 알 수 있다. Thread thread = Thread.CurrentThread;Console. WriteLine(thread. ThreadState); // 출력 결과: Running 결국 위의 프로그램조차도 스레드에 의해 순차적으로 실행되고 있는 것이다.자주 .. 2020. 7. 26.
인스턴스 메서드에 대한 콜백을 델리게이트로 구현하기 인스턴스 메서드에 대한 콜백을 델리게이트로 구현하기인스턴스 메서드가 어떻게 콜백으로 호출될 수 있는지를 이해하기 위해서, Instance De legateDemo 메서드 예제를 앞의 코드에서 다시 살펴보도록 하자. private static void InstanceDelegateDemo() { Console.WriteLine(" Instance Delegate Demo "); Program p = new Program(); Counter(1, 3, new Feedback(p.FeedbackToFile)); Console.WriteLine(); }Program 타입의 객체 p가 InstanceDelegateDemo 메서드에서 생성된 것에 주목하자.Program 타입의 객체는 인스턴스 필드나 속성을 전혀 가.. 2020. 7. 20.
박싱 과 언박싱을 최소화하라 Boxing이란? Boxing은 value type의 값을 object type으로 변환하는 것을 말한다. 닷넷 프레임워크에서 모든 타입은 object type의 상속을 받는다. 그래서 value type의 값을 좀 더 큰 영역으로 포장한다고 하여 Boxing이라고 한다. class BoxingTest1 { public static void Main() { int p = 123; object o = p; //Boxing이 일어나는 곳 Console.WriteLine(o); } } 박싱을 하면 단순히 참조에 할당하는 것보다 20배까지 시간이 소모되며, 언박싱은 할당에 4배정도 소모된다. 박싱과 언박싱에는 많은 시간이 소모된다. 되도록이면 제네릭을 사용해서 박싱과 언박싱이 일어나지 않도록 구성을 해야하며, .. 2020. 3. 10.
platform(C# 컴파일러 옵션) anycpu(기본값)는 어셈블리를 모든 플랫폼에서 실행되도록 컴파일합니다. 응용 프로그램은 가능할 때마다 64비트로 실행되고 해당 모드를 사용할 수 있을 때만 32비트로 전환됩니다. 만들어지는 모듈의 성격 PE32 /모든 환경[agnosrtic] anycpu32bitpreferred는 어셈블리를 모든 플랫폼에서 실행되도록 컴파일합니다. 응용 프로그램은 64비트와 32비트 응용 프로그램을 모두 지원하는 시스템에서 32비트로 실행됩니다. .NET Framework 4.5를 대상으로 하는 프로젝트에 대해서만 이 옵션을 지정할 수 있습니다. 만들어지는 모듈의 성격 PE32 /모든 환경[agnosrtic] ARM은 ARM(고급 RISC 컴퓨터) 프로세서가 있는 컴퓨터에서 실행할 어셈블리를 컴파일합니다. ARM64.. 2020. 3. 8.
이벤트 호출시에는 Null 조건 연산자를 사용하라. 이벤트 호출시에는 Null 조건 연산자를 사용하라. "?" 연산자를 이용하여 이벤트를 발생시킬 때는 이벤트 이름 뒤에()를 붙여 호출할수 없으므로 Invoke 메서드를 사용해야한다. C# 컴파일러는 모든 델리게이트와 이벤트에 대하여 Invoke() 메서드를 안정적 형태로 생성해주므로 이메서드를 호출하는것은 ()를 이용하여 이벤트를 직접 발생시키는 코드와 완전 동일하다. 멀티스레드 환경에서도 안전할 뿐만 아니라 이전 코드 보더 더욱 간결한다 public Object Invoke(Object[] parameters) 2020. 3. 7.
델리게이트를 이용하여 콜백을 표현하라 델리게이트를 이용하여 콜백을 표현하라 2020. 3. 6.