Microsoft MVP성태의 닷넷 이야기
윈도우 서비스 프로그램 - FORM 애플리케이션 감시서비스 [링크 복사], [링크+제목 복사]
조회: 3697
글쓴 사람
guest
홈페이지
첨부 파일
 

이미 만들어놓은 myForm.exe가 있습니다
시작프로그램에 등록되어 있어 매일 오후 5시~5시30분 동안 작동


만들려는 윈도우서비스프로그램 기능(testservice)

기능1> myForm.exe 프로그램을 에러를 감시한다 (매일 오후 5시~5시30분)
기능2> myForm.exe 에러 발생 시 myForm.exe를 testservice는 강제종료시킨다(Ctrl + Alt + Del써야하는 상황에서도)
기능3> 오후5시30분 이전이라면 myForm.exe를 제구동한다

**** 이때 ***

어떻게 testservice는 myForm.exe의 에러를 알아채나요? myForm핸들을 testservice에 등록?
myForm.exe에서 에러자체도 발생시키지 못하는 먹통상황(Ctrl + Alt + Del쓰는 상황에서도)까지도 대비하고 싶은데요

설계방향과 학습주제와 순서를 알고 싶습니다








[최초 등록일: ]
[최종 수정일: 3/2/2023]


비밀번호

댓글 작성자
 



2023-03-02 01시17분
간단하게는, myform에서 어떤 식으로든 오류를 전파시켜줘야 합니다. 특정 위치에 오류 로그를 쓰던가, 아니면 내부에서 오류가 발생할 때마다 특정 소켓으로 전송을 하든가... 원하는 대로 처리하시면 됩니다. 그렇게 전파해서 service 측에서 받아 처리합니다.

복잡하게라면, myform을 직접 시작하지 말고 별도의 진입 프로세스 단계를 하나 더 둡니다. 그 프로세스에서 myform을 실행하도록 만들고, 이때 Debug 모드로 진행하면 하위 프로세스의 오류를 모두 감지할 수 있습니다.

C# - DbgEng.dll을 이용한 간단한 디버거 제작
; https://www.sysnet.pe.kr/2/0/12096

.NET 스레드 콜 스택 덤프 (5) - ICorDebug 인터페이스 사용법
; https://www.sysnet.pe.kr/2/0/1249

혹은 유사하게 Profiler를 이용하는 경우도 가능합니다.

(닷넷 프로세스를 대상으로) 디버거 방식이 아닌 CLR Profiler를 이용해 procdump.exe 기능 구현
; https://www.sysnet.pe.kr/2/0/12049
정성태
2023-03-02 02시38분
[guest] 바로 이거였습니다 하지만 고수들의 영역이네요
일단 지도를 보고 하나하나 살펴봐야 겠네요
즐 하루
[guest]
2023-03-03 12시16분
[guest] 삭제된 블로그 -> http://blogs.microsoft.co.il/pavely/2015/07/27/writing-a-simple-debugger-with-dbgeng-dll/

자료 감사하지만 자료가 삭제되어 버렸네요 ㅜㅜ
[guest]
2023-03-03 12시21분
[guest] 머리가 나빠서 이해가 안되네요
특히 DbgEng.dll 블로그는 삭제되어 더 이해가 안되네요
[guest]
2023-03-03 02시20분
[guest] 죄송한데 public class UserDebugger : IDebugOutputCallbacks, IDebugEventCallbacksWide, IDisposable
저기서 부터 막히네요
[에러메시지]
Class UserDebugger cannot have multiple base classes --> 상속은 1개 class만 복수 클래스는 interface이용

오전 내 구글링인데 자료 거의 없고
http://blogs.microsoft.co.il/pavely/2015/07/27/writing-a-simple-debugger-with-dbgeng-dll/
삭제된 저기에 핵심이 있을 것같긴한데 공부를 더 해봐야 겠습니다 ㅜㅜ
[guest]
2023-03-03 04시31분
[guest] 그냥 에러발생 시 Async로 text파일에 기록하고
this.Close();로 처리하려합니다

너무 어려워서요 어쨋거나 감사드려요
[guest]
2023-03-03 06시30분
좋은 선택입니다. ^^ 저 역시 그렇게 했을 것입니다. 그나저나, 자신의 응용 프로그램에 대해 주변에 선임 급의 개발자가 있다면 잘 상담해 보세요. 제가 자세한 내부 사항은 모르지만, 아마 저라면 서비스 구현 없이 myform 하나로 끝냈을 것입니다.

참고로 본문의 경우 소스 코드를 github에 모두 공개했습니다. (링크로 걸어놨는데... ^^;)
정성태
2023-03-08 08시59분
[지나가는사람] 프로그램이 먹통이 되는것까지 감안한 가장 간단한 방법은,
WndProc() 콜백 함수를 사용해서 윈도우 메세지를 주고 받는겁니다.
3초나 5초에 한번씩 계속해서 주고 받으면서 서로 살아있다는걸 확인하고
myform 프로세스가 없거나 일정 시간동안 신호가 없으면 강제로 재시작해주면 됩니다.
[guest]

1  2  3  4  5  [6]  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5806스레드1/25/20233141총정리 - 다양한 스레드들 [초안] [1]파일 다운로드1
5805어웨이트1/25/20233001Taskcontinuewith vs Async/Await [2]파일 다운로드1
5804나이많은...1/25/20232861MS의 Dependency Injection(DI)에 AddSingleton으로 등록된 객체의 Event 등록후 사용시 앱 종료시 별도로 Event를 해지해야 하나요? [2]
5803dssc...1/24/20233099드라이브 문자를 통해서 물리 디스크 명칭을 알아내고 싶습니다. [1]
5802모바일앱1/22/20232978XAMARINE vs Android Studio [7]
5801블루투스1/19/20233709WPF 은행지폐계수기 개조 후 결과값 서버 전송 [2]파일 다운로드1
5800김민아1/19/20234043안녕하세요 가비지 컬렉터 동작 원리 중 궁금한점이 있습니다 [5]
5799guest1/19/20233190C# 공유폴더 내 Acess 디비 공유 [2]
5798kss1/19/20232968책 오탈인가요? [1]
5797이거비버1/19/20233063C# 공부 이후 MS 프레임워크.. 어느것을 공부해야할까요? 너무 많아서 정신이 없네요 [5]
5796guest1/19/20232778해킹 test [3]
5795동기1/18/20232619동기 스레드와 메서드와 While [2]
5794박규동1/18/20232586.net publish 할때마다 runtimeconfig 값이 바뀌는 현상 [1]
5793후후훗1/18/20232758.NET Core 에서 사용중인 함수 후킹 방법 [2]
5792Will...1/18/20232697소스코드 Log Write 기능을 리스트업 질문 [9]
5791PLC1/16/20233399C# - 실시간 5개 룸 모니터링 [15]
5790집으로 ...1/13/20233051[UI 멈춤 현상]deadlock 관련 글을 보고 혹시나 하고 문의 드립니다. [4]
5789guest1/10/20232949스레드와 Async Task [2]파일 다운로드1
5788kr11/10/20233402C# 에서 제공하는 컬렉션들의 차이점이 궁금합니다. [3]
5787stack1/10/20233189STACKOVERFLOW [1]
5786Dev ...1/9/20234059익명 클래스 말고 익명 구조체는 불가능한걸까요? [4]
5785음성인식1/8/20233652음성인식 System.Speech - 문법에 사용된 언어가 음성 인식기의 언어와 일치하지 않습니다. [2]
5784MS워드1/8/20233281MS워드에서 ctrl Z는 클립보드를 이용하나요? 아니면 참조자 이용하나요? [7]
5783구직자1/7/20233321C#개발자 구인광고와 초급개발자 [3]파일 다운로드1
5782Sqli...1/5/20233296윈도우11 노트북에서 exe(Sqlite)만들어 윈도우 7 PC에 설치 시 [5]
5781List맨1/5/20233793List.Add("newobj") 속도는 빠른 편인지요? [11]
1  2  3  4  5  [6]  7  8  9  10  11  12  13  14  15  ...