2016-12-24 145 views
-3

有我的Windows窗體的問題。這是一個非常基本的Windows窗體,從一個獨立的類中調用。它有1個按鈕和1個文本框。它需要一個客戶端Windows窗體凍結顯示()

var form = new Form1(client); 

form.Show(); 

1個參數Form 1代碼:

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'代碼,我找不到任何錯誤的初始化。可能是你的客戶端實例的某種問題。你可以嘗試:'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

運行多個UI線程不是正確的解決方案 –

+0

它確實解決了我的問題 – Jannik