2016-12-24 2 views
-3

J'ai un problème avec mon formulaire Windows. C'est une forme de fenêtre très basique, appelée d'une classe séparée. Il a 1 bouton et 1 champ de texte. Il faut 1 argument d'un clientWindows Form gel sur show()

var form = new Form1(client); 

form.Show(); 

Code Form1:

public partial class Form1 : Form 
{ 
    private DiscordClient client; 

    public Form1(DiscordClient client) 
    { 
     this.client = client; 

     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     var usernameToKick = username.Text; 

     var userToKick = client.Servers.FirstOrDefault().Users.Where(input => input.Name == usernameToKick).FirstOrDefault(); 

     userToKick.Kick(); 
    } 

    private void username_TextChanged(object sender, EventArgs e) 
    { 

    } 
} 

Ce gèle ma forme pendant environ 30 secondes, avant que le formulaire arrête à nouveau. Pourquoi cela se produit-il?

+1

Quelque chose ne va pas dans le code d'initialisation de 'Form1', que nous ne pouvons pas voir. Notez qu'un thread ne peut faire qu'une seule chose à la fois, donc si 'Form1' fait quelque chose d'intensif en calculs quand il se charge, votre application entière va geler pendant que ce calcul a lieu. –

+0

Mis à jour avec le code de form1 – Jannik

+0

Basé sur le code 'Form1' je ne trouve rien de mal avec son initialisation. Cela pourrait être un problème avec votre instance 'client'. Pouvez-vous essayer: DiscordClient client = null; '' var form = new Form1 (client); '' form.Show(); 'et voir si le problème existe toujours? –

Répondre

-1
Form form; 


form = new Form1(client, e); 

      var thread = new Thread(OpenAdminPanel); 

      thread.SetApartmentState(ApartmentState.STA); 
      thread.Start(); 


private void OpenAdminPanel() 
    { 
     Application.Run(AdminPanel); 
    } 
+2

L'exécution de plusieurs threads d'interface utilisateur n'est pas la bonne solution. –

+0

Il a cependant résolu mon problème – Jannik