2012-03-29 5 views
0

응용 프로그램이 닫히거나 컴퓨터가 종료 될 때 C# WinForms 응용 프로그램에서 일부 코드가 실행되기를 원합니다. 시작 메뉴를 통해 플러그를 뽑으면 작동하지 않습니다.WinForms 앱을 닫고 컴퓨터를 종료 할 때 코드를 실행 하시겠습니까?

기본적으로 시스템 종료시 FTP 서버에 업로드하기 위해 앱이 필요한 로그 파일이 있습니다.

어떻게하면됩니까?

+0

@BryanCrosby'AppDomain.CurrentDomain.ProcessExit + = 새 EventHandler (OnExit); 그리고 폼의'FormClosing' 이벤트를 사용합니다. –

답변

2

FormClosing 이벤트를 가로 채거나 차단하여 응용 프로그램을 종료 할 수 있습니다.

SystemEvents을 사용하면 과부 종료, 로그 오프, 일시 중지 등을 감지 할 수 있습니다. 나는 당신이 원격 서버에 업로드를 수행하기에 충분한 시간을 갖지 못하기 때문에 시스템 이벤트를 사용하지 않을 것을 권장한다. (기본값은 3 초라고 생각한다.)

+0

글쎄 what'dya이 실제로 작동 알아! –

0

컴퓨터를 종료 할 때 리소스가 부족하기 때문에 컴퓨터를 종료하지 않고 앱을 종료하는 데 집중해야한다고 생각합니다. & 작업 (업로드 및 콘텐츠) 시간. . 앱의 Form_Closing 이벤트를 사용하여 앱 종료가 호출 될 때 작업을 수행하거나 앱이 닫힐 때 Form_Closed 이벤트를 사용하여 시작할 수 있습니다.

Closing event Closed Event

+0

사용자가 내 앱과 상호 작용하지 않기 때문에 종료시 업로드를해야합니다. 그것은 숨겨져 있으며 백그라운드에서 실행됩니다. –

+2

WPF 이벤트에 연결했습니다. 질문은 WinForms에 관한 것입니다. –

+0

축하드립니다. 중요한 것은 논리입니다. algo –

1

는 양식의 FormClosing 이벤트를 후크. 이것은 사용자가 양식을 닫을 때 응답하거나, Close를 호출하는 프로그램, Windows가 종료 될 때 등 양식이 닫힐 때마다 시작됩니다.

어떤 종류의 종료를 처리해야하는지 알고 싶으면 FormClosingEventArgs에는 창이 닫히는 이유를 알려주는 CloseReason 속성 (CloseReason)이 있습니다. UserClosing 및 WindowsShutDown과 같은 값을 포함합니다.

Windows 종료시 FTP 서버에 업로드하지 못할 수도 있습니다. Windows Vista 및 7에서는 Windows가 강제 종료 할 권한을 보유하기 전에 앱을 종료하는 데 2 ​​초 밖에 걸리지 않습니다. 로그를 로컬에 저장하지 않고 다음에 앱을 시작할 때 업로드하는 것이 좋습니다.

+0

그래요. 컴퓨터가 다시 시작될 때 파일을 업로드하는 것을 생각해 본 적이 없지만, 이미'FormClosing' 이벤트를 사용해 보았습니다. 파일 끝 부분에 작은 태그를 추가하여 파일을 계속 업로드해야한다는 것을 프로그램에 알리려고합니다. 감사! –

+0

죄송합니다. 답변을 수락 한 다음 수락을 취소했지만 누군가가 종료/로그 오프시 작동 방법을 알아 냈습니다. –

+0

@ ryansworld10, 흥미 롭습니다. 따라서 SystemEvents에서 업로드하는 것이 FormClosing에서 수행하는 것보다 효과가 있습니까? 나는 그것이 (확실히 가능하지만) 그것을 기대하지 않았기 때문에 더 많이 알고 싶다. 나는 2 초의 컷오프가 어느쪽으로 든 적용될 것이라고 생각했을 것이다. –

관련 문제