winform 에서 엑셀 작업을 하고 프로세스를 지워주지 않으면 메모리를 계속 갉아 먹기에 컴퓨터가 느려진다
winform 에서 엑셀 작업을 한뒤에는 반드시 프로세스를 지워줘야 하는데 이 지우는 방법이 매우 어렵더라
구글링 해본 결과 엑셀작업을 할때 차례대로 열어놓은 엑샐 객체들을 차례대로 닫고 릴리즈 해줘야 한다는데
적용이 힘들고 잘 되지 않을 뿐더러 무엇보다더 지저분해진다
나의 방법은 내가 winform 엑샐 작업시 열었던 그 엑셀의 프로세스 ID를 기억해 process.kill(프로세스ID) 해버리는 방법이다
이 방법의 좋은 점은 간편하고 쉬우며 직관성이 좋다.
아래에 코드를 소개 하겠으니 모두들 홧팅
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // 프로세스 id 찾는 [DllImport("user32.dll")] static extern int GetWindowThreadProcessId(int hWnd, out int lpdwProcessId); int GetExcelProcess(Excel.Application excelApp) { int id; GetWindowThreadProcessId(excelApp.Hwnd, out id); //return Process.GetProcessById(id); 리턴방식으로 써도 됨 return id; } // Excel 프로그램을 의미합니다. Excel.Application excelApp = new Excel.Application(); //엑셀 프로세스를 찾아서~ Process p = Process.GetProcessById(GetExcelProcess(excelApp)); //죽이자 p.Kill(); | cs |
'Winform' 카테고리의 다른 글
winform 차트 예제 (0) | 2019.01.30 |
---|---|
winform 엑셀 저장(초고속) (0) | 2019.01.29 |
winform DataGridView to Excel (0) | 2019.01.22 |
winform 엑셀 import (0) | 2019.01.17 |
winform cursor waiting 마우스 로딩 (0) | 2019.01.17 |