2011-03-31 2 views

답변

1

, 당신은 아마 파일을 복사 및 이동 할 수 있지만 선택의 여지가 없어 "다른 프로세스에서 사용하고있다"라고 대신 사본에. 파일이 삭제 될 때 당신이 "미리보기"를 취소 행복 경우

, 단지 먼저 멀리 이동 : 트릭을 할해야

private void close_btn_Click(object sender, EventArgs e) 
{ 
    preview_wb.Navigate("about:blank"); 
    File.Delete(@"C:\mypdf.pdf"); 
} 

합니다.

+0

아직 작동하지 않고 다른 프로세스에서 계속 사용 중입니다. "AcroRd32.exe"프로세스를 죽이는 것은 어떨까요? – Holyoxx

+0

아참. 그거 짜증나네. 그런 프로세스가 실행 중입니까? 저는 Acrobat이 Acrobat 내부에서 어떻게 작동하는지 알지 못합니다. 그것은 실제 exe 또는 ActiveX 컨트롤입니까? –

+0

예, 실제 exe입니다. 나는 또한 곡예사와 관련된 모든 과정을 죽였다. 아직도 작동하지 않았다. – Holyoxx

0

Internet Explorer의 캐시 (FindFirst/NextUrlCacheEntry API 사용)를 통해 파일을 찾고 DeleteUrlCacheEntry를 사용하여 파일을 삭제하려고 시도 했습니까? 루프를 반복하는 방법에 대한 사전 작성된 예제가 있으며, 새, 그냥 Google에서 삭제를 수행합니다.

"쿠키 :"로 시작하는 캐시와 "방문한 사이트"로 시작하는 3 가지 유형의 캐시가 제공됩니다. 이는 방문한 사이트 목록을 나타냅니다 (기록이 아니므로 두 가지를 혼동하지 마십시오) 마지막 유형은 http : // 또는 https : //로 시작하는 url 형태로 제공됩니다. 루핑이 끝나면 삭제할 항목을 선택하여 선택할 수 있습니다.

질문이 있으시면이 방법을 사용하여 "파일 사용 중"문제를 제거하십시오. 그렇지 않은 경우 캐시 삭제를 수행하기 전에 웹 브라우저 컨트롤을 삭제하거나 언로드하십시오 (단, 당신은 아마 필요하지 않을 것입니다). 나는 그것을 좋아하지 않아

webBrowser.Navigate("about:blank"); 
while (webBrowser.ReadyState != WebBrowserReadyState.Complete) 
    Application.DoEvents(); 

File.Delete(fileName); 

:

3

보통 사람들이 코드를 제안한다. DocumentCompleted 이벤트를 처리하는 것을 선호합니다.

void DeleteFile() 
{  
    needToDeleteFile = true; 
    webBrowser.Navigate("about:blank"); 
} 

void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    if (needToDeleteFile) 
    { 
     File.Delete(fileName); 
     needToDeleteFile = false; 
    } 
} 
관련 문제