syn*_*cis 9 c# forms multithreading topmost winforms
我使用以下代码在新线程中打开一个表单:
private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(ThreadProc);
thread.Start();
}
public void ThreadProc()
{
Form form = new Form();
form.TopMost = true;
form.ShowDialog();
}
Run Code Online (Sandbox Code Playgroud)
但是,即使我将其设置为true,新创建的表单也不是TopMost.
如何在线程TopMost中创建表单?
通常你不需要另一个线程,你可以像往常一样在模态或非模态模式下打开表单,如果表单需要执行繁重的过程,那么你在一个线程内执行该过程.
具体到你的问题一个选项是描述从Application.Run运行的形式在这里.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(ThreadProc);
thread.Start();
}
public void ThreadProc()
{
using (Form1 _form = new Form1())
{
_form.TopMost = true;
Application.Run(_form);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将启动一个带有自己的消息泵的新线程,并将其保留为TopMost表单.
归档时间: |
|
查看次数: |
2967 次 |
最近记录: |