닷넷
-
C# 병렬 foreach, Parallel.ForEach닷넷/C# 2018. 1. 2. 11:11
foreach는 c#의 또 다른 for문이다. for처럼 foreach도 작업을 하나씩 차례대로 처리한다.이렇게 되다보면 앞의 작업처리가 오래걸릴 경우 그 다음 작업에 영향을 줄 수 있는 일이 발생한다. 하나씩 차례대로 처리를 하는데 앞 작업이 뒤의 작업에 영향을 주어서는 안될 때데이터를 병렬처리하고자 할 때 C#에선 간단히 할 수 있는 방법이 있다. 바로 Parallel.ForEach 메소드를 사용하는 것이다. Parallel.ForEach의 문법은 foreach와 비슷하므로 foreach를 쓸 줄 알면 쉽게 사용할 수 있다.참고로 Parallel.ForEach를 쓰기 위해선 using System.Threading.Tasks; 가 선언되어 있어야 한다. foreach 문을 간단히 표현하면 다음과 같다..
-
C# DataGridView를 Database에 동기화하는 방법 (InsertCommand, UpdateCommand, DeleteCommand 사용하기)닷넷/WinForms 2017. 10. 20. 09:12
DataGridView, RadGridView 등에서 데이터베이스에 있는 테이블을 그리드뷰에 바인딩하고 그리드뷰에서 데이터를 수정하거나, 추가하거나, 삭제하거나 할 때 각각 UpdateCommand, InsertCommand, DeleteCommand를 사용하면 그동안 써왔던, 익히 알고 있었을 ExecuteNonQuery 로 일일이 쿼리를 줘서 데이터베이스의 데이터를 변경하는 것보다 더욱 수월하게 작업을 할 수 있다. 그러니까, 그리드뷰에서 수정할 때마다 수정버튼을 누르거나, 추가할 때마다 추가버튼을 누르지 않아도 버튼은 마지막에 딱 한번만 누르면 데이터베이스에 그리드뷰에서 수정한 것이 그대로 수정이 되고, 추가한 것은 추가되고, 삭제된 것은 삭제된다. InsertCommand, UpdateComman..
-
C# AES 256 암호화와 복호화 코드닷넷/C# 2017. 9. 14. 14:23
#region 암호화 & 복호화 private string AESEncrypt256(string _text) { string Password = "jasmintime"; // 인증키 RijndaelManaged RijndaelCipher = new RijndaelManaged(); byte[] PlainText = Encoding.Unicode.GetBytes(_text); byte[] Salt = Encoding.ASCII.GetBytes(Password.Length.ToString()); PasswordDeriveBytes SecretKey = new PasswordDeriveBytes(Password, Salt); ICryptoTransform Encryptor = RijndaelCipher.Cre..
-
C# 현재 실행 중인 프로세스 목록닷넷/C# 2017. 9. 8. 10:25
string procName = string.Empty;foreach (System.Diagnostics.Process proc in System.Diagnostics.Process.GetProcesses()){ if (proc.MainWindowHandle != IntPtr.Zero) { if (proc.MainWindowTitle == "") continue; procName = string.Format("{0},{1}", procName, proc.MainModule.FileName); }} 이렇게 하면 프로세스의 파일 경로까지 다 나와서 프로세스 이름만 검출하려고 하는 경우엔문자열을 쪼개는 것이 좋겠다. string procList = string.Empty;string procName = str..
-
How to format a datetime with slash in C#닷넷/C# 2017. 9. 5. 15:13
Current Date and Time : 9 / 5, 2017 PM 3:00:00 yyyy : Year (2017) / yyy : Year (2017) / yy : year (17)MM : Month (09) / M (9)dd : Day (05) / d (5)HH : Hour (15) / hh : hour (03) / h : hour (3)mm : Minute (00) / m (0)ss : Second(30) Example: 1.DateTimePicker Formatting :dateTimePicker1.Format = DateTimePickerFormat.Custom; dateTimePicker1.CustomFormat = "yyyy-MM-dd"; => 2017-09-05 2.dateTimePick..
-
C# Local host 가져오기 (로컬 IP 주소 확인하기)닷넷/C# 2017. 8. 24. 17:54
using System.Net; using System.Net.Sockets; private string GetLocalIP() { string myIP = ""; IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName()); foreach (IPAddress ip in host.AddressList) { if (ip.AddressFamily == AddressFamily.InterNetwork) { myIP = ip.ToString(); } } return myIP; }
-
C# CrossThread 오류가 발생할 때닷넷/WinForms 2017. 8. 7. 15:00
스레드로 작업을 돌리는 도중 CrossThread 오류가 날 때가 있다.그 이유는 스레드 간에 간섭이 일어났기 때문이다.프로그램이 실행될 때 눈에 보이는 전부가 이미 스레드 하나이다. 이걸 메인스레드라 부른다.(프로세스는 이미 스레드 하나를 가지고 있는 것임.) 그 이후에 우리가 추가적으로 작업할 때 스레드를 선언하여 사용하는데 (이하 A 스레드)A 스레드에서 메인스레드에 있는 작업들 가령 TextBox나 ListBox 같은 컨트롤에 데이터를 입력하게 되는 경우A 스레드에서 메인스레드로의 간섭이 일어나 CrossThread 오류가 나는 것이다. 이를 해결하려면 대리자(delegate)를 이용하면 된다. 다음은 리스트박스에 텍스트를 추가하는 델리게이트와 메소드이며 A 스레드 안에서 리스트박스에 텍스트를 추..
-
C# 네이버 블로그 파싱하는 방법닷넷/C# 2017. 7. 21. 16:22
진짜 네이버 블로그 소스는 프레임에 씌여있어서 네이버 블로그를 파싱하려면한 꺼풀 벗겨서 다시 한번 웹페이지를 불러와야한다. 1. 윈폼에 도구상자에서 WebBrowser 두 개를 놓는다. 2. 일반적인 네이버 블로그 url를 webBrowser1에 띄운다.webBrowser1.Navigate("http://blog.naver.com/freecat27"); 3. webBrowser1의 DocumentCompleted 이벤트에서 프레임에 씌여진 진짜 네이버 블로그 주소를 파싱하고, webBrowser2에 그 주소를 띄운다.private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e){ if (e.U..
-
C# 엑셀파일로 저장할 때 셀병합, 자동정렬, 선, 가운데 정렬닷넷/C# 2017. 6. 26. 18:18
C#에서 엑셀파일로 저장할 때 셀 병합, 자동정렬, 테두리 그리는, 가운데정렬 하는 방법 //소스코드 Excel.Range range = null; range = xlWorksheet.get_Range("A2", "I2"); // 범위지정 range.Merge(true); // 범위만큼 셀 병합 range.Font.Size = 14; // 글씨크기 range.Font.Underline = true; // 밑줄 range.Font.Bold = true; // 굵게 range = xlWorksheet.get_Range("A3", "I3"); // 새로 범위지정 range.Merge(true); // 범위만큼 셀 병합 // 새로 범위지정 후 range = xlWorksheet.get_Range("A3", "I..
-
C# 리소스 파일 관련 참고 자료 사이트 링크닷넷/C# 2017. 5. 30. 16:01
1. 리소스에 포함된 데이터 읽고 쓰기http://devilchen.tistory.com/4720 2. MSDN : 데스크톱 응용 프로그램용 리소스 파일 만들기https://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwiIg4-M-5bUAhWCUZQKHcWAA5QQFggkMAA&url=https%3A%2F%2Fmsdn.microsoft.com%2Fko-kr%2Flibrary%2Fxbx3z216(v%3Dvs.110).aspx&usg=AFQjCNE_5T_aJ7zqAYUAFJAVOw0jQIr0wQ&sig2=rR-FtEw5kGJR6uowJlB8BA
-
C# 바이너리 파일 읽기 및 클래스에 담기닷넷/C# 2017. 5. 26. 18:01
내가 갖고 있는 바이너리 파일의 구조는 처음 4바이트는 정수고, 그 다음부턴 문자열로 되어있다.하나의 문자열엔 \t, \0, \n 등등으로 값이 나뉘어져 있기도 하다.거기서 필요한 값만 얻어올 수 있도록 코딩하였다. using System.IO; public class clsConfig { public int ltype { get; set; } public string mdbpath { get; set; } public string sqlserver { get; set; } public string sqldatabase { get; set; } public string sqluserid { get; set; } public string sqlpassword { get; set; } } public cls..
-
C# DataGridView 데이터 엑셀파일에 저장 using oledb닷넷/C# 2017. 5. 24. 13:43
엑셀 라이브러리 참조없이 OleDb를 이용한 방법으로 DataGridView의 데이터를 엑셀로 출력하는 방법이다.이때, 엑셀파일을 File 을 이용해 생성하면 제대로 생성되지 않아 사용할 없다.따라서 소스를 보면 알겠지만 엑셀파일 하나를 복사해서 거기에 데이터를 저장하는 편법을 이용했다. OleDbConnection conn = null; try { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Excel File(.xls)|*.xls"; if (sfd.ShowDialog() == DialogResult.OK) { FileInfo fi = new FileInfo(sfd.FileName); if (!fi.Exists) { File.Copy(Applic..
-
C# 엑셀파일 가져오기 using OleDb닷넷/C# 2017. 5. 22. 09:57
OleDb를 이용하면 컴퓨터에 엑셀이 설치되어있지 않아도, 엑셀 라이브러리를 참조하지 않아도엑셀의 데이터를 가져올 수 있다.만약 안 된다고 하면 provider가 설치되어 있지 않아 그런 것이니 AccessDatabaseEngine을 설치하면 된다. using System.Data.OleDb; private DataTable GetSheet(string excelPath) { string connstring = string.Empty; if (excelPath.IndexOf(".xlsx") > -1) // 확장자에 따라서 provider 주의 { connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelPath + ";Extended Pr..
-
C# 프로그램 실행 중복방지닷넷/WinForms 2017. 4. 26. 17:24
Program.cs 파일에int thisID = System.Diagnostics.Process.GetCurrentProcess().Id; // 현재 기동한 프로그램 id // 실행 중인 프로세스 중에서 현재 기동한 프로그램과 같은 이름을 가진 프로그램 수집System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName("Process Name"); if (p.Length > 1){ for (int i = 0; i
-
C# FTP 연결 확인 및 파일 다운로드닷넷/C# 2017. 1. 10. 14:56
using System.Net; private ftpConn(){ try { FtpWebRequest ftpre = (FtpWebRequest)WebRequest.Create(string.Format("ftp://{0}/{1}", txtFTP_Host.Text.Trim(), txtFTP_File.Text.Trim())); ftpre.Method = WebRequestMethods.Ftp.ListDirectory; ftpre.Credentials = new NetworkCredential(txtFTP_UID.Text.Trim(), txtFTP_PWD.Text.Trim()); ftpre.GetResponse(); } catch { //Exception }} private void ftpDownload(){ ..