簡體   English   中英

C#在線程中創建新表單

[英]C# New Form Creating In A Thread

我有一個TCP服務器應用程序,並且有一個用於與TCP客戶端通信的線程。 當我從客戶端收到數據時,我想使用此數據創建新表單,但無法在線程中創建表單。 我可以使用按鈕單擊事件輕松地創建表單。

我哪里錯了?

謝謝。

為了避免這種情況,最好讓應用程序原始的UI線程處理新表單的創建,並且不要有多個UI線程。 幸運的是,您可以在該線程上調用操作。

這里關於如何做它的WinForms或在這里做,在WPF / Silverlight的。

執行此工作的示例代碼:

  private void Button1_Click(object sender, EventArgs e)
{
    Thread t1 = new Thread(StartMe);
    t1.Name = "Custom Thread";
    t1.IsBackground = true;
    t1.Start();
}

private void StartMe()
{
    //We are switching to main UI thread.
    TextBox1.Invoke(new InvokeDelegate(InvokeMethod), null); 
}

public void InvokeMethod()
{
    //This function will be on main thread if called by Control.Invoke/Control.BeginInvoke
    MyForm frm = new MyForm();
    frm.Show();
}

您必須在某處將上下文更改為GUI線程以創建新表單-在某處,您將需要BeginInvoke()。

這是哪種服務器-是“經典”同步服務器,其中每個客戶端連接都有一個偵聽線程和一個server <> client線程?

您不想在客戶端連接時創建表單,僅在連接的客戶端明確詢問時才創建此表單,是嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM