Microsoft MVP성태의 닷넷 이야기
윈도우 서비스 프로그램 - FORM 애플리케이션 감시서비스 [링크 복사], [링크+제목 복사],
조회: 3716
글쓴 사람
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)
5730김재환10/7/20224546WPF에서 디스플레이 배율이 100%가 아닌 경우, Window의 포지션 정보가 부정확해지는 문제 [2]
5729김기헌10/2/20224194안녕하세요 선생님 뮤텍스 관련 질문 드립니다 [2]
5728김경환9/29/20224212그리드뷰관련마지막질문하나드리겠습니다선생님 [5]파일 다운로드1
5727김경환9/26/20224086c# 윈폼 tcp/ip 기반 데이터그리드뷰질문하나드리겟습니다 [3]
5726양승조 donator9/22/20224804C# dll 과 C++ 간 배열 전달. SafeArray [10]파일 다운로드1
5725김기헌9/21/20223701안녕하세요 선생님 윈폼 컨트롤 Dispose 관련 질문드립니다 [2]
5724감사합니...9/19/20223736스레드와 스레드 안전한 객체 사용관련 문의드립니다. [5]
5723드리렁9/13/20223663Pinned Object에 대해서 질문이 있습니다. [2]
5722김인태9/8/20223835대화상자에서 alt + tab 후킹 작업 [1]
5721우종9/7/20223990C++ DLL 과 C# 연동 문의 [2]
5720한예지 donator9/6/20223701학습 방법 질문 있습니다. [7]
5719김경한9/6/20224034안녕하세요 질문하나만드리겠습니다...! [10]
5718김민아9/2/20224066안녕하세요 생성자 호출 시 초기화 순서 질문드립니다 [2]
5716iili...8/26/20224295WinDbg 커널 디버깅에서의 thread freeze [2]
5715에릭8/19/20224699WMI 쿼리 결과값이 Windows Service와 Console 출력에서 상이한 이유가 있을까요? [9]파일 다운로드1
5714허니빠8/18/20224730.net6 hint path 를 프로젝트 단위로 지정할 수 있는 방법을 알고싶습니다 [8]
5713김기헌8/17/20224652안녕하세요 rgb 계산 오차가 있는데 원인을 모르겠습니다.. [3]
5712하태8/17/20224131안녕하세요 background service에서 user32dll 접근 질문 드리겠습니다.! [2]
5711하태8/16/20223655안녕하세요! 윈도우즈 해상도 관련 질문 드립니다. [1]
5710장성욱8/12/20223871c# 시리얼 통신 관련 질문 [3]
5709초보8/12/20223665WPF 커맨드 관련 질문 [2]
5708민성8/11/20223925안녕하세요 c#에서 화면의 배율 및 레이아웃을 변경할려면 어떻게 해야 할까요? [2]파일 다운로드1
5707민성8/10/20223565WPF 엣지 컨트롤에서 화면이 안보이는 현상 [2]파일 다운로드1
5706종규8/7/20225989WPF 에서 SVG 아이콘 사용 방법 문의 [2]
5705김기헌8/6/20224702안녕하세요 선생님 싱글톤 패턴 간단 질문 [2]
5704따봉이8/4/20224610EventHandler 관련 [1]
1  2  3  4  5  6  7  8  [9]  10  11  12  13  14  15  ...