반응형

전체 글 4951

C#: 파일 또는 폴더(하위 폴더포함) 읽기전용 해제

파일이나 디렉토리에 읽기전용이 설정되어 파일을 쓸 수 없거나 삭제가 안될경우 사용한다. // using System.IO; pFolderPath = "C:\\폴더\\"; private void deleteReadOnly(string pFolderPath) { foreach (string Folder in Directory.GetDirectories(pFolderPath)) { //재귀함수 deleteReadOnly(Folder); } foreach (string file in Directory.GetFiles(pFolderPath)) { FileInfo fi = new FileInfo(file); FileAttributes fas = File.GetAttributes(file); if ((fas & Fi..

C# & ASP.NET 2010.12.13

C# 프로세스 킬하기 (Application.Exit() 를 해도 프로세스에 남아있을때..)

분명 Application.Exit() 를 사용하여 프로그램을 종료하였는데도 프로세스에 살아있는 경우가 발생했다. 프로그램에 물려 있던 FileGDB 역시 응용프로그램 사용중으로 삭제가 되지 않았다. 확실하게 종료하기 위해 Process 자체를 kill 하였다. using System.Diagnostics; foreach (Process process in Process.GetProcesses()) { //프로그램명으로 시작되는 프로세스를 모두 죽인다. 엉뚱한 프로세스를 죽이지 않게 IF문을 잘 사용한다. if (process.ProcessName.ToUpper().StartsWith("프로그램명") { process.Kill(); } }

C# & ASP.NET 2010.12.07

ArcObject : FileGDB 의 Blob 에서 파일 삽입, 읽기 (예: BLOB의 이미지 파일 읽기 및 등록)

FileGDB 에서 Blob 필드에서 파일 읽기 using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.esriSystem; using System.IO; //blob 파일 읽기 private void loadBlob(IFeatureWorkspace pFeatureWorkspace , string where) { try { ITable pTable; IQueryFilter pQueryFilter = new QueryFilter(); pQueryFilter.WhereClause = where; pTable = pFeatureWorkspace.OpenTable("피쳐클래스 또는 테이블"); ICursor pCursor; pCursor = pTable.Search(pQueryF..

GIS 2010.12.07

C# Serial Port에서 GPS 데이터 읽기 (RS-232 Serial COM Port 사용 GPS 수신처리- NMEA 'GPGGA' 메세지)

C# 에서 GPS 를 연결하여 정보를 얻어야 할 일이 생겼다. 우선 GPS 기기를 블르투스 나 시리얼 케이블을 이용하여 컴퓨터에 연결하면 COM 포트로 연결이 되는데 프로그램에서 이 GPS의 수신 메시지를 받아 사용해 보자. GPS의 NMEA 프로토콜 중에서 GPGGA 를 사용하려고 하는데 인터넷을 검색해 보면 NMEA 에 대해서 자세하게 설명한 것이 많으므로 프로토콜 설명은 일단 넘어가도록 하겠다. GPS NMEA 프로토콜 참고 블로그- 출처: 초심자용 에린 입문서 블로그 (http://erine.egloos.com/2233135) using System.IO.Ports; //GPS 실행 시작 Thread ThreadGPS = null ; //GPS 쓰레드 SerialPort GPSserialPort;..

C# & ASP.NET 2010.12.06

ArcObject : FeatureClass , Feature, Table 의 Domain(도메인)값 찾아서 가져오기-C#

공간정보에서 피쳐클래스나 속성테이블의 필드에 Domain을 사용하였을 경우 해당 값(코드정보등..)의 Domain 값을 찾아 반환해주는 함수이다. 만약 도메인에 구성된 값이 아닐경우에는 그냥 본래의 값을 반환한다. 만약 도메인 값 리스트를 뽑고 싶으면 소스에서 반환타입과 비교절을 적절히 사용하면 됨. 아래의 함수는 피쳐에 도메인 값을 반환하는 경우인데 만약 일반 속성테이블이나 피쳐클래쓰라면 빨간색으로 써논 부분을 참고해서 사용하면 된다. using ESRI.ArcGIS.Geodatabase; /// /// 도메인 이름 가져오기 /// /// 피쳐 /// 필드이름 /// 필드값 /// public string FindDominValue(IFeature pFeature, string fieldName, st..

GIS 2010.12.06

ArcObject : GDB 속성 테이블을 DataTable 로 컨버전 (FeatureClass를 DataTable로 컨버전하기)-C#

SDE를 사용할때는 DB에서 쿼리로 정보를 가져오면 되는데 File GDB를 사용하다 보니 File GDB의 속성 테이블이나 피쳐클래스 정보를 DataTable로 만들어 쓰면 편한 경우가 많아 만들어 보았다. ㅋ using ESRI.ArcGIS.Geodatabase; 우선 피쳐클래스나 속성 테이블에서 가져올 정보를 ICursor 형태로 만들어 주는 메소드를 정의한다. // 속성 테이블이나 FeatureClass 에서 ICursor 가져오기 public static ICursor GetCursor(IFeatureWorkspace pFeatWS, string sTableName, string sCauseWhere) { ITable pTable; ICursor pCursor = null; ; IQueryFil..

GIS 2010.12.06

C# DataTable 그룹핑 하기 - 프로그램에서 DataTable 를 group by 하기

DB에서 쿼리로 Group By 절로 그룹핑을 하면 편하련만.. 어쩔 수 없이 DataTable 자체로 그룹핑을 할 일이 생겼다. private void SetGrid() { //DT 라는 데이터 테이블이 존재한다고 가정.. DataTable DT = new DataTable(); DT = 값 넣기... DataTable groupByTable = DT.Clone(); // 그룹핑될 DataTable 을 정의하고 구조를 원본 DataTable 스키마 복사 dataTableGroupBy(DT, ref groupByTable); // groupByTable 그룹핑된 데이터 테이블 } public void dataTableGroupBy(DataTable oriData, ref DataTable copyData..

C# & ASP.NET 2010.12.06

C# 쓰레드 사용시 크로스 스레드 작업이 잘못되었습니다 컨트롤이 자신이 만들어진 스레드가 아닌....

C# 윈도우 프로그램에서 쓰레드를 사용하였는데 쓰레드에서 폼의 컨트롤을 사용할 경우 '크로스 스레드 작업이 잘못되었습니다. '...'컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스되었습니다.' 에러가 발생한다. 쓰레드가 컨트롤에 접근할때 무언가 충돌로 인한 에러인듯 하다. 해결하기 위해 예를 들어 라벨 컨트롤이라던지 텍스트 박스 컨트롤을 사용한다 치면 먼저 딜리게이트 선언. delegate void Ctrl_Involk (Control ctrl, string text); public void setText(Control ctrl, string txtValue) { if (ctrl.InvokeRequired) { Ctrl_Involk CI= new Ctrl_Involk (setText); ctrl..

C# & ASP.NET 2010.09.10
반응형