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

+ Recent posts