본문 바로가기

IIS 재시작시 클라이언트 요청 없이 자동로딩 설정 IIS의 경우, 기본설정된 상태에서는 재시작을 하면, 클라이언트의 요청이 들어오면 어플리케이션을 로딩한다.이 기능은 Tomcat 같은 다른 WAS에도 존재하는 것으로 사실 좋은 기능이다. 서버가 메모리를 효율적으로 관리하도록 도와주는 것이니까.이것은 사용자의 요청이 일정시간이 지나면 Sleep 상태가 되도록 하는 설정과 함께 사용하면 매우 좋다.그러나 어플리케이션 백그라운드에서 스케줄링 업무가 있을 경우에는 매우 답이 안나오는 기능이 된다.클라이언트로부터 처음 요청이 들어오기 전에는 스케줄링 업무도 동작하지 않을 것이기 때문이다. 그럼 이렇게 말하는 사람이 있을 수 있다. IIS에 설정에 일정시간 지나면 Sleep 설정을 해제하고, 관리자가 웹으로 처음 요청을 보내서 어플리케이션을 로딩한 다음에 서버를 .. 더보기
C# 멀티쓰레드에서 Winform 컨트롤 변경시 동기화 방법 윈폼 프로젝트를 생성하고, TextBox를 하나 추가하였고, 아래와 같은 소슬 작성하였다.private void Form1_Load(object sender, EventArgs e) { Thread th = new Thread(test); th.Start(); } void test() { textBox1.Text = "열려라 참깨"; } 그리고 빌드를 진행하니 아래와 같이 '크로스 쓰레드' 에러가 발생하였다.원인은 메인 쓰레드에서 객체를 가지고 있는데, 딴 넘이 와서 설정을 변경하니 발생한 에러다.그래서 이럴 경우는 동기화를 시켜줘야한다.아래와 같이 Invoke()나 BeginInvoke()를 메소드를 사용해서 동기화 할수 있다.delegate void testDel(); private void Form.. 더보기
c# 하위 디렉토리 포함하여 파일 검색하기 먼저 소스를 공개하겠다. namespace FileReader { class Program { static int count = 1; static void Main(string[] args) { DirFileSearch(@"D:\데이터", "dat"); } static void DirFileSearch(string path, string file) { try { string[] dirs = Directory.GetDirectories(path); string[] files = Directory.GetFiles(path, $"*.{file}"); foreach(string f in files) { // 이 곳에 해당 파일을 찾아서 처리할 코드를 삽입하면 된다. Console.WriteLine($"[{cou.. 더보기