2014-07-12 2 views
-3

프로그램 실행이 끝날 때 언로드해야하는 하드웨어웨어 장치가 있거나 정의되지 않은/불안정한/위험한 상태로 남겨집니다. 이것은 정상 작동 중에는 충분히 쉽지만 어떤 종류의 충돌이나 예기치 않은 상황에서는 대개 제대로 내리지 않습니다.ProcessExit을 사용하여 C#에서 하드웨어 장치를 종료 하시겠습니까?

검색은, 내가 설치 프로세스 종료에 보드를 정리하는 이벤트 수, 또는 발견 적어도 그들 중 일부 : checkAndPerformSafeShutdown는 청소 네이티브 DLL 함수 호출의 래퍼입니다

public MainForm() 
{ 
... 
    AppDomain.CurrentDomain.ProcessExit += new EventHandler(OnProcessExit); 
... 
} 

static void OnProcessExit(object sender, EventArgs e) 
{   myHardwareDevice.checkAndPerformSafeShutdown(); 
} 

드라이버를 설치하고 모든 하드웨어를 안전한 상태로 만듭니다. 그러나 다음과 같이 컴파일하지 못합니다.

오류 CS0120 : 비 정적 필드, 메서드 또는 'projectNme.MainForm.myHardwareDevice'속성에 개체 참조가 필요합니다.

이 이벤트 처리기의 범위는 무엇입니까? 그리고이 클래스의 다른 이벤트 처리기와 다른 점은 무엇입니까? 하드웨어 장치에 대한 참조를 얻을 수 있습니까?

+0

'MyHardwareDevice'는 (는) 클래스입니까? –

+0

'myHardwareDevice'를 정적으로 선언하셨습니까? – EZI

+0

도 - http://blogs.msdn.com/b/jmstall/archive/2006/11/26/process-exit-event.aspx?Redirected=true - 질문에 대답하지 않지만 더 올릴 수 있습니다 – sambomartin

답변

0

MainForm에서 인스턴스 처리기로 이벤트 핸들러를 정의하면 모든 인스턴스 변수에 액세스 할 수 있습니다.

+0

오 내 신이 나는 '정적'을 알지 못했다고 나는 믿을 수 없다. 스레드 닫기, 계정 삭제 : o – user1850479