2011-01-11 5 views
0

Hoffentlich macht der Titel Sinn, aber ich werde mein Problem beschreiben. Ich verwende ein untergeordnetes Fenster in Silverlight, um eine Verarbeitungsnachricht anzuzeigen und ein Bild zu drehen, wenn die Benutzeroberfläche etwas Arbeit leistet. Sobald ein Completed Event aufgerufen wurde, wird das Fenster geschlossen.Silverlight & C# - Öffnen Sie ein untergeordnetes Fenster nur, wenn ein Zeitrahmen vergeht

Problem ist, dass es ein wenig hässlich aussieht, wenn die Benutzeroberfläche eine schnelle Aufgabe ausführt, wenn das untergeordnete Fenster geöffnet und dann in weniger als 1 Sekunde geschlossen wird.

Ich möchte in der Lage sein, das untergeordnete Fenster nur zu öffnen, wenn 2 Sekunden der Verarbeitung vergangen sind und dann schließen, um abzuschließen.

Ich habe einen Abschnitt meiner XAML hinzugefügt, wo ich das Kind unten anrufe. Ich habe gesucht, kann aber nichts finden und es könnte nicht möglich sein.

void edit_Closed (Objektabsender, EventArgs e) { EditChannelDetails edit = Absender als EditChannelDetails;

 if (edit.DialogResult == true) 
     { 
      if (edit != null) 
      { 
       Channel edited = new Channel(); 
       edited.channelId = Int32.Parse(edit.ChannelID.Text); 
       edited.name = edit.ChannelName.Text; 
       edited.description = edit.ChannelDescription.Text; 

       ChannelClient proxy = new ChannelClient(new BasicHttpBinding(), new EndpointAddress("http://servername")); 
       proxy.UpdateChannelCompleted += new EventHandler<UpdateChannelCompletedEventArgs>(proxy_UpdateChannelCompleted); 
       proxy.UpdateChannelAsync(edited); 
      } 
     } 
     processingDialog.Show(); 
    } 

    void proxy_UpdateChannelCompleted(object sender, UpdateChannelCompletedEventArgs e) 
    { 
     processingDialog.Close(); 

Etc .....

Antwort

0
Boolean closeFlag = false; 

einen Timer Start:

DispatcherTimer timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(2) }; 

timer.Tick += (tts, tte) => { 
    timer.Stop(); 
    closeFlag = true; 
}; 

timer.Start(); 

Und Flagge überprüfen:

if (!closeFlag) 
{ 
    processingDialog.Close(); 
} 
Verwandte Themen