Microsoft MVP성태의 닷넷 이야기
윈도우 서비스 프로그램 - FORM 애플리케이션 감시서비스 [링크 복사], [링크+제목 복사],
조회: 3714
글쓴 사람
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]

... 16  17  18  19  20  [21]  22  23  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
5402민성11/5/20207736안녕하세요 책을 보고 질문하나만 드릴깨요 [2]
5401민성11/3/20206786안녕하세요 이번에도 질문 하나만 드리겠습니다. [2]
5400진우10/29/20206478SQL Server 관련 몇가지 문의 [2]
5399Wpf개...10/21/20206685Binding 된 항목의 갱신 시 간헐적 끊어짐 발생 문제. [2]
5397나그네10/15/20206152.net Core 3.1 에서 Entity Framework 와 ADO.NET 선택에 관해 여쭤봅니다. [2]
5396여정욱10/15/20206249CLR heap 관련 질문 2 [2]
5395여정욱10/14/20208011CLR heap 관련 질문 [2]
5394진우10/12/202011451닷넷코어 (닷넷5) winform wpf는 리눅스/맥에서도 가능한가요? [2]
5393김세용9/23/20207949C#에서 대량의 클래스를 빠르게 생성하는 방법이 없을까요? [6]
5392전경호9/22/20207599WPF에서 WindowsFormsHost의 메모리 누수 문제 때문에 문의드립니다. [1]파일 다운로드1
5391민성9/22/20206905안녕하세요 항상 감사드립니다. 하나 질문 드리겠습니다. [1]
5390alow...9/18/20209783System.AccessViolationException 보호된메모리 부분 예외처리 [1]
5389C# 8...9/18/20208026후위 증감 연산자 오버로딩 방법 좀 알려주세요 [4]
5388영귤9/17/20208982Nullable reference type 에 Non-nullable reference type 을 대입해도 경고가 발생하지 않습니다. [2]
5387하태9/17/20207426안녕하세요! 비동기 통신과 관련하여 질문하나만 드리겠습니다! [3]
5386박민웅9/16/20209182정성태 스승님 안녕하세요 !! [1]
5385영귤9/12/202066873항 연산자에 ref 지원? [1]
5384guest9/10/20206560시작하세요! C# 8.0 프로그래밍 책에 오타가 있는 것 같습니다. [3]
5383민성9/8/20208045안녕하세요 자주 도움을 주셔서 감사드립니다. WPF에서 크롬 브라우저 삽입에 대하여 [1]
5382정씨9/4/20207209[C#] 시리얼통신 수신된 데이터를 그리드뷰에 뿌르는데 일정 시간이 지나면 버벅 거리는 이유가 뭘까요?? [3]
5381질문 있...9/4/20206985웹으로 사용하는 c#과 응용프로그램으로 사용하는 c#이 많이 다른가요?? [2]
5380yeon9/3/20207053winform 의 datagridview는 바인딩이 안 되나요? [1]
5379guest9/2/20209709시작하세요! C# 8.0 프로그래밍 책에 오타가 있습니다. [3]
5378net9/2/20207194mes 응용프로그램을 .net 웹폼으로 만들기도 하나요? [2]
5377net9/2/20206600.net 사용한 웹폼으로 응용프로그램을 만들경우 [1]
5376영귤9/1/20206980nullable 타입간의 비교연산은 그냥 가능한 건가요? [1]
... 16  17  18  19  20  [21]  22  23  24  25  26  27  28  29  30  ...