2013-04-25 1 views
0

사용자가 일정 기간 동안 응용 프로그램을 사용하지 않으면 응용 프로그램을 종료해야합니다. 내가 사용하는 방법은 이제 하나의 창에서 훌륭하게 작동하지만 나는 글로벌하게 만들 수 없습니다. 자동 종료 WPF 응용 프로그램

DispatcherTimer dt; 
    public Window3() 
    { 
     InitializeComponent(); 
     //initialize the timer 
     dt = new DispatcherTimer(); 
     dt.Interval = TimeSpan.FromSeconds(1); 
     dt.Start(); 
     dt.Tick += new EventHandler(dt_Tick); 
    } 

    long ticks = 0; 
    void dt_Tick(object sender, EventArgs e) 
    { 
     ticks++; 
     //close the application if 10 seconds passed without an event 
     if (ticks > 10) 
     { 
      Close(); 
     } 
    } 

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     //Initialize a hook 
     ((HwndSource)PresentationSource.FromVisual(this)).AddHook(myHook); 
    } 


    private IntPtr myHook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) 
    { 
     //reset counter 
     ticks = 0; 
     switch (msg) 
     { 
      // process messages here 
      default: 
       return IntPtr.Zero; 
     } 
    } 

내 질문

은 다음과 같습니다 :
은 내가 작성하는 모든 창에 다시 작성하는 대신 글로벌이 일을 할 수 이 내가 지금 그것을 어떻게?
더 좋은 방법은 없나요?
감사합니다.

답변

0

기본 창 클래스를 만든 다음 모든 Windows에서 기본 창 클래스를 상속받습니다. 새 기본 클래스가 있고 창을 추가하거나 기존 창을 상속하도록 창을 업데이트하면 새 기본 클래스를 반영하도록 Xaml을 변경해야합니다. 그래서 여기에 예제 Window 클래스가 있습니다.

public class WindowBase : Window 
{ 
    public WindowBase() 
    { 
     //initialize timer and hook loaded event 
     this.Loaded += WindowBase_Loaded; 
    } 

    void WindowBase_Loaded(object sender, RoutedEventArgs e) 
    { 

    } 
} 

여기에서 상속하는 창입니다. 여기에 다음

public partial class MainWindow : WindowBase 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 
} 

과 같은 창

<local:WindowBase x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:WpfApplication1" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 

    </Grid> 
</local:WindowBase> 
에 대한 XAML
0

싱글 톤 클래스를 만들고 그 위에 대부분의 기능을 이동하십시오. 모든 타이머 또는 스레드가 거기에 상주 할 수 있고, 모든 윈도우 또는 사용자 컨트롤이 싱글 톤 클래스를 호출 할 수 있으며, 이것만으로도 응용 프로그램이 종료됩니다.