簡體   English   中英

C# 在新線程或任務中打開表單?

[英]C# Open Form in a new Thread or Task?

如何使用線程或任務在 C# 中打開一個新表單。

例子:

public void openform()
{
    Form _form = new Form();
    _form.show()
}

Thread _thread = new Thread(openform);
_thread.start();

如果我使用線程,它會打開表單並再次關閉它。

如果您只需將ApartmentState設置為STA並啟動另一個消息循環,您就可以創建另一個 UI 線程:

Thread _thread = new Thread(() =>
{
    Application.Run(new Form());
});
_thread.SetApartmentState(ApartmentState.STA);
_thread.Start();

請注意,您將無法在此窗體的主線程上顯示您創建的控件。 這就是為什么創建多個 UI 線程通常是一個壞主意的原因。

Thread thd = new Thread(() =>
            {

                //Do Some stuff 
                //Do some more stuff

                var dispatcher = Dispatcher.CurrentDispatcher;
                dispatcher.UnhandledException += Dispatcher_UnhandledException; //you exception handling logic
                Dispatcher.Run();
            });
            thd.IsBackground = true;
            thd.SetApartmentState(ApartmentState.STA);
            thd.Start();

根據您的用例調用Dispacther.InvokeShutdown(); 完成后。

通過使用ShowDialog它僅在窗口關閉時返回:

new Thread(() => new MyForm().ShowDialog()).Start();

暫無
暫無

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

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