2016-10-12 2 views
0

J'essaie d'afficher une fenêtre dans le coin inférieur droit de l'écran au moment de la connexion dans mon programme.Application en état suspendu en cliquant sur la fenêtre

La page que j'appelle au moment de la connexion est dotée d'un indicateur de téléserveur. Lors de la connexion, la page s'ouvre et affiche l'indicateur occupé et la fenêtre contextuelle, qui fonctionne correctement. Mais si je clique sur le popup pendant que l'indicateur occupé fonctionne, mon programme est pendu (c'est-à-dire qu'il ne répond plus et je dois tuer le processus depuis le gestionnaire de tâches).

Quelqu'un peut-il m'aider ici.

Pour référence de code, j'utilise WPF.

Merci

Répondre

2

Vous devez utiliser « async » et « attendent » des mots-clés pour que votre interface utilisateur pour répondre lors de l'exécution somthing en arrière-plan. de cette façon que vous exécutez sur le backgroung sera exécuté sur une tâche et non differnt geler votre interface utilisateur:

private async void LoginButtonClick(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
     radbusyindicator.Visibility = Visibility.Visible; 
     await LoginAsync(); 
     radbusyindicator.Visibility = Visibility.Hidden; 
    } 
    catch (Exception) 
    {  
    } 
} 

private async Task<string> LoginAsync() 
{ 
    try 
    { 
     var loginTask = await Task.Run(() => 
     { 
      Login(); 
      return "Login Successfully !" 
     }); 
     return loginTask.Result; 
    } 
    catch (Exception ex) 
    { 

    } 
} 
+0

vous avez raison, il @Rom besoin d'utiliser 'async await' ou il peut utiliser travailleur de fond –