2013-08-20 3 views
2

C#으로 DLL을 작성 중이므로 특정 시간 내에 DLL 사용을 제한해야합니다 (원하지 않음).DLL 사용 시간 제한 설정

사용자에게 알리는 동안 사용 시작부터 N 시간이 지나면 작동을 멈추고 싶습니다. DLL이 M 시간 동안 사용되지 않으면 사용을 중지하십시오 (활성 상태 일종).

사용법은 DLL의 기능 중 하나를 호출합니다.

예외를 사용하면 항상 DLL의 가용성과 충돌합니다 (차단할 수 없음).

저는 어떤 도움을 주시면 고맙겠습니다. 저는 C#을 사용하여 경험이별로 없습니다.

모든 언어의 솔루션은 훌륭하지만 분명히 Windows 컴퓨터에서 실행되고 있지만 구성 요소 (서비스 팩 등)는 수정이 필요할 경우 쉽게 수정할 수 있습니다.

귀하의 도움에 감사드립니다. 감사합니다.

수정

나는 분명하지 않다고 생각합니다. 필요한 것은 사용자에게 DLL의 함수 사용 종료를 알리는 것이므로 원하는 경우 해당 함수를 다시 초기화 할 수 있습니다. DLL이 언로드되지 않습니다. 그리고 저는 DLL 프로그램을 사용하는 주 프로그램 프로세스를 방해하고 싶지 않습니다.

+2

당신은 지금까지 뭔가를 시도 했습니까? –

+0

이렇게하는 상용 제품이 있습니다. –

+0

afaik 당신은 다른 어셈블리에 dll을로드 할 수 있으며 필요하다면 전체 어셈블리를로드/언로드 할 수 있습니다. – Sinatr

답변

1

사용 타이머 :

System.Threading.Timer t = new System.Threading.Timer(End, null, N * 60 * 1000, Timeout.Infinite); 

    private static void End(object state) 
    { 
    // Tell the user and end the program 
    } 
사용하는 또 다른 타이머를 사용하지 않는

: 지금

System.Threading.Timer t2 = new System.Threading.Timer(End, null, M * 60 * 1000, Timeout.Infinite); 

내가 당신을 위해 의미 "사용"모르겠어요,하지만 어떤 함수로 간주됩니다 당신이 사용할 수있는 프로그램을 종료

t2.Change(M * 60 * 1000, Timeout.Infinite); 

을 : a는 할 "사용"

Environment.Exit(0); 

더 많은 스레드가있는 경우 좀비가 생길 수 있으므로 주 스레드가 아닌 다른 모든 스레드가 백그라운드이거나 사용자가 중단하거나 단일 스레드로 닫아야합니다 .

지금 난 경우에만 사용자에게 통지 할 것을 이해 ... 그래서 내가 사용하는 것이 좋습니다 무엇 :

MessageBox.Show(this, "what message you want to give the user"); 
+0

타이머를 생각했습니다. 내 문제는 "프로그램을 끝내는 중"부분입니다. – TomF

+0

@TomF 대답을 편집했습니다 –

+0

죄송합니다. 정말 귀찮아 야합니다. 전체 프로세스는 사용자에게 알리는 인터페이스를 제공하지 않으며, 프로그램도 닫을 것입니다. 당신의 도움을 주셔서 감사합니다. – TomF