C#17 C# DllImport 사용하기 Dll 파일을 Import하기 위해서는 아래와 같은 사항을 참조해야한다. using System.Runtime.InteropServices; 이를 참조하면 아래와 같이 DllImport를 사용하는 것이 가능해진다. [DllImport("DllTest.dll")]public static extern int TestFunc(int a, int b); 위의 코드는 메서드선언(혹은 구현)과 같은 레벨에서 이루어져야 한다.이렇게 Dll을 import 하고 Dll의 메서드를 extern을 통해 선언한다. 이제 Dll에 있는 메서드를 사용할 준비가 됐다. 하지만 VS2010에서는 이 상태에서 빌드를 할 경우 런타임에서 다음과 같은 오류가 발생한다. "Managed Debugging Assistant 'LoaderLo.. 2013. 6. 5. C# 시간을 Tick으로 변환 또는 Tick을 시간형태로 변환 System.TimeSpan tspan = System.TimeSpan.FromTicks(DateTime.Now.Ticks); long curTime = (long)tspan.TotalSeconds; string time = curTime.ToString(); MessageBox.Show(time); DateTime dt; TimeSpan tSpan; long curTimes; long.TryParse(time, out curTimes); tSpan = TimeSpan.FromSeconds(curTimes); dt = new DateTime(tSpan.Ticks); MessageBox.Show(dt.ToString()); 2013. 6. 3. C# DateTime.Parse DateTime.Parse supports many formats. It is versatile. It can provoke a FormatException. We see examples of parsing formatted date and time strings, with examples from databases and Internet sources.DateTimeExampleFirst we see that DateTime.Parse is a static method that you can call without using a DateTime instance. It returns a new DateTime instance, which is represented as a struct. If you pr.. 2013. 6. 1. C# Tick Count사용해서 성능테스트하기 VS2008에서 제공해주는 분석 ->성능마법사는 뭔가 어려워서... 원리는 System함수인 TickCount를 호출 하여 해당 함수를 수행하는데 걸린 시간을 알아봐서 어느 곳이 잘못 되었는지 알아내는 함수 public class TestElapsedTime { [DllImport("kernel32.dll")] public static extern uint GetTickCount(); uint uStartTick; uint uStopTick; public void SetStart() { uStartTick = GetTickCount(); } public void SetEnd(string strName) { uStopTick = GetTickCount(); string elapsedTime = Conver.. 2013. 5. 28. C# Time 실제시간->현재 리얼타임 시간을 받아와서 뿌림타이머시간->처음에만 리얼타임시간을 받고 1초마다 초를 증가시켜줌 컴퓨터성능에따라, 멀티프로그래밍갯수(시스템이 바쁨에따라)에 따라 타이머시간이 누락될수도있다.처음엔 실제시간과 타이머시간이 같지만 시간의 지남에 따라실제시간과 타이머시간이 차이나게된다. 시스템이 굉장히 바쁠 때는 타이머가 정확한 주기대로 발생하지 않으므로 이렇게 만들면 시계가 금방 느려진다.타이머 이벤트는 작업을 해야 할 적당한 시점을 대충 알려줄 뿐이다. --소스--using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.. 2013. 5. 28. C# 가비지컬렉터와 가비지컬렉션 흔히 닷넷기반의 환경을 관리되는(Managed) 환경으로 부르곤 한다. 그렇다면 도대체 무엇이 관리가 된다는 것인가? 그 관리의 주체는 바로 메모리이다. 이전 Native 시대에는 메모리를 할당하고 해제하는 부분을 개발자가 직접 처리하였지만 닷넷은 그 부분을 자동으로 관리해주는 것이다. 닷넷이 관리되는 환경의 수행이 가능할 수 있는 것은 바로 “가비지 컬렉터(Garbage Collector)”가 닷넷에 존재하기 때문이다. 관리환경의 장점을 최대한 활용하고 사용하기 위해서는 가비지 컬렉터에 대해서 잘 알아 두어야 하고 동작원리를 파악하고 있어야 한다. 필자는 가비지 컬렉터의 원리에 대한 내용을 2002년도 “Chappell의 .NET 여행”이라는 책에서 처음 접했었고, 이 내용은 닷넷의 메모리 관리를 이해.. 2013. 5. 14. C# Log4Net을 이용한 로그남기기 http://logging.apache.org/log4net/index.html 위 사이트에서 라이브러리를 제공한다. binary를 다운로드 받으면 각 플랫폼마다 빌드된 lib 가 존재 한다. 현재 프로젝트는 .net Framwork 3.5 기반이므로 .net 3.5 빌드 버젼의 dll을 사용한다.dll 파일을 참조에 추가하면위와 같이 References 라이브러리에서 확인할수있다.이 라이브러리를 사용하기 위해서 log4net.xml 파일이 필요하다. 로그 정보 파일로 log4j와 거의 동일하다. 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: 32.. 2013. 5. 14. C# 윈폼에서 단축키 설정 윈폼(via C#)으로 각종 툴, 어플리케이션을 만들 때 유저키덕후들을 위한 단축키가 필요할 수 있다. 마우스라는 혁신적인 입력 장치가 있더라도 숙련되면 키보드 이상가기 힘드니까 :) 언뜻 생각하기에는 System.Windows.Forms.Form 클래스에서 KeyDown 이벤트를 잡아서 처리를 하면 될 것 같아 해보았지만, 동작하지 않는다 ㅇㅂㅇ;; Google신(MS는 Bing신...)에 문의 결과 ProcessCmdKey 메소드를 오버라이드 한다면 된다고 한다. 간단히 해보면 다음과 같다. protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (!base.ProcessCmdKey(ref msg, keyData)) // 위.. 2013. 5. 3. c# Window Form Application Idle 루프문 사용자설정 Application.EnableVisualStyles(); // Application.SetCompatibleTextRenderingDefault(false); // Application.Run(new Main()); // Main Roop using ( formMain RootFrame = new formMain() ) { RootFrame.peer = peer; RootFrame.Show(); while (RootFrame.Created) { Application.DoEvents(); peer.Service(); } Application.Exit(); } 2013. 4. 30. 이전 1 2 다음