1.멀티쓰레드 => 작업을 병렬로 실행 가능.프로그램을 실행 시, UI Thread 실행됨. UI thread 는 싱글 쓰레드임. 여러 개의 기능들이 각 작업이 끝나면 순차적으로 다음 작업이 이뤄짐.using System.Threading;public partial class Form1 : Form{ Thread thread = null; private void Form1_Load(object sender, EventArgs e) { thread = new Thread(new ThreadStart(WorkThread)); thread.IsBackground = true; // UIThread가 종료될 때 내가 만든 쓰레드도 종료시킴. thread.Prio..
public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API 구성 및 서비스 // Web API 경로 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); } } URL 경로 처음에 만들 때는 action이 빠져있으니, action 추가하기 파라미터는 id로 넣어야 저 경로 그대로 들어간다. seq로 했다가 왜 안되지,,..
프로그램 배포 평소 개발할 때는 Debug 모드에서 작업했음. 배포할 때는 Release로 변경 하여 다시 빌드해야 함. > 파일 탐색기 -> bin -> Release 폴더가 생긴 것을 확인할 수 있다. 폴더 내 파일들을 전부 복사해서, 사용자나 고객사에게 해당 파일들을 배포하면 된다. ** .net framework가 없거나 버전이 안 맞으면, .net framework를 설치하라는 메시지가 나온다. ** .net framework이기 때문에 운영체제가 윈도우인 환경에서만 실행이 가능하다. App.config 에서 데이터베이스 접속 정보를 변경해야 할때에는, exe.config파일 -> 우클릭 -> 메모장에서 편집 클릭 config 내용들이 보여지며, 수정 가능하다. 데이터베이스 접속 정보를 원격지를..
라이브러리 - 재사용성, 유지보수, 코드관리가 쉬워진다. 솔루션 내 클래스라이브러리 추가(.net framework) 빌드 후 프로젝트 참조 추가를 해주어야 사용 가능함. 기존 프로젝트에서 만들었던 메소드들의 재사용성을 높이기 위해 라이브러리화하기 ** 클래스 라이브러리 public class Class1 { private SqlConnection sqlConn = null; private string connectionString = ""; public void setConnectionString(string str) { connectionString = str; } public DataSet requestExecuteNonQuery(string query) { DataSet ds = new DataS..
저장 프로시저(SP) - 쿼리문을 여러 개 실행할 수 있다. - 장점: 소스코드와 분리되어 쿼리 관리가 쉬워진다. 새 프로시저 생성 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: 2024.01.28 -- Description:신규 책 추가 프로시저 -- ============================================= CREATE PROCEDURE InsertBOOKS -- 파라미터 : 프로시저를 호출함에 있어서 인자로 매개변수와 같은 역할을 하는 것임. @BOOKNO varchar(20), @BOOKNAME va..
[도서관 책 관리 프로그램] 개발 * SqlCommand 클래스 : CRUD를 수행할 수 있다. SqlDataReader클래스 SqlDataAdapter클래스 연결된 상태에서 데이터를 읽어온다. ( 연결형 ) 순간적으로 데이터베이스와 연결 후 데이터를 읽어와 이후 연결을 끊는다. ( 비연결형 ) 계속 연결되어 있기 때문에 비연결형보다 속도가 빠르다. 계속 연결되어 있기 때문에 접속자 수가 많으면 라이센스 비용이 많이 들 수 있다. 클라이언트 측의 메모리에 데이터 사본을 저장하여 메모리에 부담이 될 수 있다. conn.Open(); 연결을 해야 함. conn.Open(); 할 필요가 없음. 연결이 안되었으면 자동적으로 연결을 하고 끊음. DataTable dt = new DataTable(); SqlCom..
MSSQL 연결 SQL Server 2022 Express 설치 SSMS 19 설치 SQL Server 및 Windows 인증 모드로 설치 SSMS 로그인(sa) 후, '새 데이터베이스' 생성 SQL Server를 설치할 때 SQL Server Express와 MSSQLServer 프로토콜이 각각 생성되는 것은 일반적인 상황입니다. 이 둘 간의 주요 차이점은 다음과 같습니다: SQL Server Express 프로토콜: SQL Server Express는 무료 버전으로 제공되는 SQL Server의 한 유형입니다. SQL Server Express 프로토콜은 주로 개발 및 테스트 목적으로 사용됩니다. 보안 및 성능 측면에서 제한이 있을 수 있습니다. 주로 개발자들이 로컬 환경에서 애플리케이션을 개발하고 ..
* 사용자 정의 컨트롤러 : 나만의 기능을 가지는 컨트롤러를 생성 가능. 프로젝트에서 > 새 항목 추가 > 사용자 정의 컨트롤러 클릭 컨트롤러를 만든 후, 저장, 빌드를 해야 Form에서 사용 가능. 이미지 파일 추가 프로퍼티스(Properties) > 리소스 > 리소스 추가 > 기존 파일 추가 외부에서 사용자 정의 컨트롤러 안에 있는 컨트롤들에 접근하려면 private 이기 때문에 속성들을 이용하고, getter, setter을 사용해야 함. EventHandler를 통해서 외부에서 클릭 이벤트에 대해 추가적으로 기능을 붙일 수 있음. Form1.cs UserControl1.cs Invoke 코드 ?. 연산자 null이 아닌지 확인하고, 스레드로부터 안전한 방식으로 호출한다.
단일 프로세스로 구성하면, 프로그램 충돌 방지, 클라이언트의 실수 방지 등을 예방할 수 있음. Mutex : 프로세스 간 동기화에 사용할 수도 있는 동기화 기본 형식입니다. => 프로세스 제어 https://learn.microsoft.com/ko-kr/dotnet/api/system.threading.mutex?view=net-8.0 Mutex 클래스 (System.Threading) 프로세스 간 동기화에 사용할 수도 있는 동기화 기본 형식입니다. learn.microsoft.com 2개 이상의 쓰레드가 있는데 동시에 공유 리소스(메모리, 변수, ...)의 자원을 access해야 하는 경우, 한 번에 하나의 쓰레드만 사용되도록 동기화 메커니즘이 필요하다. Mutex 클래스는 공유 리소스(메모리)에 관해..