2012-02-08 3 views
0

제 컨설팅 회사에서 우리는 매우 비싼 시뮬레이션 소프트웨어를 사용합니다. 이 응용 프로그램/프로세스 (백그라운드에서 C# 사용)의 사용을 모니터링하는 방법이 필요합니다. 사용자가 특정 응용 프로그램을 실행하면 작업 이름을 입력하라는 메시지가 표시됩니다. 그런 다음 프로그램을 닫으면 사용 시간이 네트워크에있는 데이터베이스로 전송됩니다. 이렇게하면 고객에게 $/분 단위로 비용을 청구하여 소프트웨어 비용을 회수 할 수 있습니다. 프롬프트를 제외하고 프로그램은 사용자에게 거의 보이지 않아야합니다.프로세스 추적을위한 가장 좋은 방법

나는이 일을 몇 가지 방법을 생각했다,하지만 난 최선의 확실하지 않다 :

  1. 만 트레이 아이콘, 시작에서 실행되는 프로그램이 있습니다. 아마도 나는 백그라운드 작업자에게 프로세스를 지속적으로 모니터링하고, 스레드를 잠자 게하고, 프로세스를 5 분마다 점검해야한다고 생각합니다.

  2. 시작시 트레이 아이콘이있는 Quartz.net과 같은 것을 사용하십시오. 이 경우에도 분 단위로 적용됩니다. 나는 Quartz.net에 익숙하지 않지만, 나의 연구에서 아마도 가능할 것 같다.

  3. 일종의 Windows 서비스를 사용하십시오. 내가 가장 잘 알고있는이 하나.

어떤 방법이 가장 효과적일까요? 감사합니다

+0

괜찮은 프로그래머라도 추적기를 사용 중지합니다. – LarsTech

+0

이름을 묻는 이유는 무엇입니까? 나는 사용자가 개입하지 않고 자신의 통계를 기록하고 집으로 전화하거나 앱을 코딩한다고 생각할 것이다. –

+0

@LarsTech : 프로그래머가 왜 그것을 사용하지 않겠습니까? –

답변

0

실행시 필요한 정보와 시작 시간을 수집하는 간단한 C# 프로그램을 작성할 수 있습니다.

그런 다음 Process 클래스를 사용하여 시뮬레이션 소프트웨어를 실행하십시오. 종료 응용 프로그램에 대한 대기, WaitForExit()를 사용하여 종료 과정 기다린

그래서 기본적으로 당신은 단순히 필요한 정보를 수집하는 주요 응용 프로그램을 실행하는 응용 프로그램으로 끝낼 등의 실행 시간이 필요하다 무엇이든 전체 실행 시간에 필요한 모든 작업을 수행합니다. 사용자가 볼 수없는 한, 응용 프로그램이 끝나기를 기다리는 동안 주 창 (필요한 정보를 수집하는 양식 역할도 함)을 최소화 할 수 있습니다.

다음은 C# 내에서 실행 파일을 시작하는 작은 예제입니다.

private void LaunchApp() 
    { 
     Process proc = new Process(); 
     /* we are going to assume wordpad is installed on workstation */ 

     /* collect needed info and time */ 


     proc.StartInfo.FileName = "Wordpad.exe"; 
     proc.StartInfo.Arguments = "SomeFile.txt"; 
     proc.Start(); 
     proc.WaitForExit(); 


     /* App has ended. Now process execution time etc. */ 
    } 
+0

이것은 흥미로운 것 같습니다. 기본적으로 "프로그램 시작 기"유형 프로그램을 만들어야합니다. 실행기를 통해 프로그램을 시작하지 않으면 쉽게 피할 수 있지만 이것은 하나의 아이디어입니다. 관리가 100 % 행복하지는 않을지 확실하지 않습니다. 숨겨진 것이 아니기 때문에 프로그램 시작에 대한 사람들의 습관을 바꾸어야합니다. 아이디어를 가져 주셔서 감사합니다! – SnackAttack

+0

반갑습니다. 사용자는 단순히 대화 상자와 상호 작용하지 않고 작업 이름을 기록하도록 요구 사항을 우회 할 수 있습니다. 그동안 시뮬레이션 소프트웨어는 여전히 실행 중입니다. 앱을 시작하는 유일한 방법은 런처 앱을 사용한다고 가정 한 필수 정보를 입력하는 것입니다. 그러나 응용 프로그램 바탕 화면과 작업 표시 줄, 메뉴 모음 링크를 제거하고 실행 프로그램에 대한 링크로 대체하여 습관을 바꿀 수 있습니다. – Chimera