2011-02-17 16 views

Respuesta

3

Creo que sería esto.

En un DispatcherObject (como una ventana o un control de usuario):

this.Dispatcher.BeginInvoke(new Action(() => SomeMethod()), DispatcherPriority.ApplicationIdle); 
+2

Esta será una acción de una sola vez. OnIdle en Windows Forms se llama repetidamente ... –

+0

Puedo vivir con eso. – user380719

+0

-1 La invocación de método único no es un medio continuo para procesar "en reposo" – MickyD

6

Debe utilizar un DispatcherTimer con un conjunto DispatcherPriority a cualquiera DispatcherPriority.ApplicationIdle o DispatcherPriority.SystemIdle (dependiendo de sus objetivos).

0

Ésta es la forma en que hago procesamiento inactivo en XAML

DispatcherTimer timerIdle; 
    private void OnLoaded(object sender, RoutedEventArgs e) 
    { 
     //Create our idle timer. 
     timerIdle = new DispatcherTimer 
      (
      TimeSpan.FromMinutes(1), 
      DispatcherPriority.ApplicationIdle, 
      (s, b) => { 
       timerIdle.Stop(); 
       *************SOME FUNCTION HERE***************** 
      }, 
      Application.Current.Dispatcher 
      ); 

     //Start the timer here 
     timerIdle.Start(); 
    } 

    private void OnMouseMove(object sender, MouseEventArgs e) 
    { 
     if(!timerIdle.IsEnabled) 
      timerIdle.Start(); 
    } 
Cuestiones relacionadas