2012-02-05 3 views
2

: 내 생각에 잠시 동안나는 (그 차이를 만드는 경우) 나는 다음과 같은 코드의 조각이 C#을 사용 비주얼 스튜디오 2008에서 쓰고 있어요

if(saveFileDialog1.ShowDialog() == DialogResult.OK) 
{ 
    //Write Stuff to File Here 
} 

을 내 파일을 작성한 코드는 영원히 오래 걸렸지 만, 디버깅시 "if"문과 "if"내의 첫 번째 코드의 첫 번째 대괄호 사이를 오가며 (5 ~ 10 초) 소요됩니다.

내가 잘못하고있는 것이 있습니까? UI에서 saveFileDialog 객체를 생성하는 것과 코드를 통해 즉시 생성하는 것 사이에 어떤 차이가 있습니까? "else"문이 없다면 차이가 있습니까?

모든 의견이나 아이디어를 크게 높이세요!

+0

어떤 유형이'saveFileDialog1'입니까? – BrokenGlass

+0

컴퓨터에 네트워크 드라이브를 매핑 했습니까? 그렇다면 속도가 느리거나 연결이 끊어지면 "파일 저장"대화 상자를 만드는 Win32 API가 평소보다 오래 걸릴 수 있습니다. –

+0

@BrokenGlass : "유형"이 무슨 뜻인지 잘 모르겠습니다. System.Windows.Forms.SaveFileDialog입니다. @ 마이크 : 모든 네트워크 드라이브가 연결되어 있습니다. 만약 내가 (어떻게 든) saveFileDialog를 C :/Drive로 좁혀 야한다면 – Demasterpl

답변

1

많은 컴퓨터에서이 대화 상자를 사용할 때 많은 DLL이 프로세스에로드됩니다. 프로젝트 + 속성, 디버그 탭을 사용하여로드되는 것을 볼 수 있습니다. "관리되지 않는 코드 디버깅 사용"확인란을 선택하십시오. 출력 창은 프로그램에 웜을 발생시키는 모든 DLL의 흔적을 보여줍니다.

이들은 셸 확장이며 Explorer의 사용자 지정입니다. 사용하는 대화 상자는 셸 대화 상자입니다. 일반 탐색기보기와의 유사성을 확실하게 인식 할 수 있습니다. 아이콘 및 컨텍스트 메뉴와 같은 것은 동일하게 작동합니다. 셸 확장을 많이 설치하는 것은 개발자의 컴퓨터에서 일반적으로 이루어지며 사용자 컴퓨터보다 많습니다. 익스플로러 자체에서 사용하기를 원하는 툴을 통합하는 등의 편의성을 제공하는 곳이 많습니다.

문제를 디버깅하는 것이 쉽지는 않지만 이러한 확장에 대한 실제 소스 코드는 제공되지 않습니다. 출력 창에서 트레이스에 대한 트러블 러에 대한 힌트를 얻을 수 있습니다. 하나의 특정 DLL 다음에 오랜 휴지기가 있으면이 DLL이 문제의 원인임을 알 수 있습니다. 아무것도 실제로 단단한.

더 나은 방법은 SysInternals의 자동 실행 유틸리티를 사용하는 것입니다. 그것은 어떤 쉘 익스텐션이 설치되었는지를 정확하게 보여 주며 체크 박스를 클릭하기 만하면 쉘 익스텐션을 비활성화 할 수 있습니다. Microsoft 저작권 및 귀하가없이 살 수있는 물건이없는 모든 것을 비활성화하십시오. 변경 사항을 적용하려면 Logout + Login이 필요합니다.

+0

내 컴퓨터를 귀찮게 생각해서 제대로 이해하고 있다면? "비 관리 코드 디버깅 사용"확인란이 "아니오"라고 말하는 "보안"팝업을 표시하는지 확인합니다. 나는이 팝업을 다시 올릴 수 없다. – Demasterpl

+0

예, "gunk"가 여기에 적합한 단어입니다. –