2016-12-24 2 views
-3

Имея проблему с моей формой окна. Это очень простая форма окна, называемая из отдельного класса. Он имеет 1 кнопку и 1 текстовое поле. Он берет 1 аргумент клиентаWindows Form freezing on show()

var form = new Form1(client); 

form.Show(); 

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) 
    { 

    } 
} 

Это замораживает свою форму в течение примерно 30 секунд, прежде чем форма выключается снова. Почему это происходит?

+1

Что-то не так в коде инициализации 'Form1', который мы не можем видеть. Обратите внимание, что поток может выполнять только одну вещь за раз, поэтому, если 'Form1' делает что-то вычислительно интенсивное, когда оно загружается, ваше приложение будет зависеть во время этого вычисления. –

+0

Обновлено кодом form1 – Jannik

+0

На основе кода «Form1» я не могу найти что-то не так с его инициализацией. Возможно, это какая-то проблема с вашим экземпляром 'client'. Можете ли вы попробовать: «DiscordClient client = null;» var form = new Form1 (client); '' form.Show(); 'и посмотреть, существует ли проблема? –

ответ

-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

Запуск нескольких потоков пользовательского интерфейса - это не правильное решение –

+0

Он действительно исправил мою проблему – Jannik