2012-01-04 2 views
1

.xlsx 파일에서 제품 목록을 가져와 사용자가 해당 제품 목록을 기반으로 한 주문을 만들도록하는 C# 프로그램을 작성했습니다. 사용자가 완료되면 프로그램은 주문을 기반으로 하나 이상의 시스템 사양을 작성합니다.이 사양은 .docx 파일에 기록됩니다. Office 2007을 컴퓨터에 설치하고 Microsoft.Office.Interop.Excel 및 Microsoft.Office.Interop.Word 네임 스페이스를 사용하고 있습니다.C# Word 자동화가 Windows 탐색기를 손상시킵니다.

문제 : 프로그램을 실행 한 후 Windows 탐색기가 자주 중단되고 다시 시작해야합니다. 이 문제는 폴더를 탐색 할 때나 폴더를 마우스 오른쪽 버튼으로 클릭 할 때 발생합니다. 이 문제는 프로그램을 종료 한 후에도 발생하며 컴퓨터를 다시 시작하는 것이 유일한 해결책입니다. 출력 파일 (.docx)을 만들 때만 발생합니다. 내가 프로그램을 시작하고 평소와 같이 사용하지만 단어 파일을 만들지 않으면 문제가 발생하지 않는 것 같습니다. 프로그램이 출력 파일을 만든 후에는 Word가 사용자에게 "Visible"로 표시되어 수동으로 편집 할 수 있습니다. 사용자는 문서 편집을 마치면 응용 프로그램이라는 단어를 닫습니다.

단어 자동화를 실행할 때 Windows 탐색기가 손상 될 수있는 이유는 무엇입니까? 정말이 도움이 필요합니다. 어떤 제안이라도 환영합니다.

+0

시작하려면 WINWORD.exe가 실행중인 인스턴스가 몇 개인 지 확인하려면 작업 관리자를 확인하십시오. 편집 : 아래의 Vinzz 응답을 참조하십시오. 그는 철저한 답을 제외하고는 똑같은 일을하고 있습니다. –

+0

실행중인 Winword.exe 인스턴스가 없습니다. 프로그램이 끝나면 사용자가 응용 프로그램이라는 단어를 수동으로 닫습니다. 이 후에 작업 관리자에서 winword.exe가 사라집니다. –

답변

2

실행 후 유령 excel.exe 및 word.exe 프로세스가 남아 있습니까?

이러한 고스트는 시스템을 불안정하게 만들 수 있습니다.

자동화를 통해 인스턴스화 한 COM 개체를 제대로 릴리스하지 않을 가능성이 있습니다.

인스턴스화하는 모든 COM 개체에 Marshal.ReleaseComObject(yourobj);을 사용하십시오. 그것은 정말 고통 스럽습니다.

참고 :

mySheet = myExcelObject.workbooks[0].Sheet[0]는 시트 개체를 인스턴스화뿐만 아니라 통합 문서 객체되지 않습니다 : 당신이 그것을 알고 있기없이 COM 개체를 인스턴스화하지 않도록해야합니다.

규칙 : COM 개체 (foo.bar.baz)에서 보조 속성을 사용하고 모든 것을 해제하지 마십시오.

최종 참고 : 서버에 office automation at all를 사용하지 않는, 마이크로 소프트 자신의 말에 따라, 완전히 그것에 대해 libraries가 관리하는, 나쁜.

+0

"유령"이있는 경우 작업 관리자 목록에서 단어를 보지 않거나 실행해야합니까? Excel이 작업 관리자에서 계속 실행 중이라는 것을 알았 기 때문에 Excel 개체를 더 빨리 릴리스하려고했습니다. 며칠 전 "귀신"에 대해 알지 못 했으므로 제대로했는지는 확실치 않지만 더 이상 작업 관리자에서 실행되는 Excel이 없습니다. Word는 사용자가 수동으로 닫습니다. 즉 "WORD-ghosts"를 제거 할 필요가 없습니다. –

+0

음,이 경우 유령은 실제로 작업 관리자에서 나머지 excel.exe 프로세스 탐색기입니다. 남아있는 프로세스가 없으면 다른 곳에 문제가있을 수 있습니다. 프로그램이 제대로 종료 되었습니까? 생성 된 .docx 파일을 삭제할 수 있습니까?그렇지 않다면, 여전히 프로그램의 핸들이 있습니다. – Vinzz

관련 문제