프로그램 실행이 끝날 때 언로드해야하는 하드웨어웨어 장치가 있거나 정의되지 않은/불안정한/위험한 상태로 남겨집니다. 이것은 정상 작동 중에는 충분히 쉽지만 어떤 종류의 충돌이나 예기치 않은 상황에서는 대개 제대로 내리지 않습니다.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'속성에 개체 참조가 필요합니다.
이 이벤트 처리기의 범위는 무엇입니까? 그리고이 클래스의 다른 이벤트 처리기와 다른 점은 무엇입니까? 하드웨어 장치에 대한 참조를 얻을 수 있습니까?
'MyHardwareDevice'는 (는) 클래스입니까? –
'myHardwareDevice'를 정적으로 선언하셨습니까? – EZI
도 - http://blogs.msdn.com/b/jmstall/archive/2006/11/26/process-exit-event.aspx?Redirected=true - 질문에 대답하지 않지만 더 올릴 수 있습니다 – sambomartin