private void Form1_Load(object sender, EventArgs e)
{
Thread clientThread = new Thread(new ParameterizedThreadStart(ThreadFunc));
clientThread.Start("datad");
}
private void ThreadFunc(object j)
{
Form2 f = new Form2();
f.Show();
}
我这样写 form2打开后立刻关闭
还有 就是 在线程中如何像textbox中赋值
关于第一个问题:
我们知道,一个程序运行叫做进程,其实这个进程本身对于系统来说就是一个线程。。。而多线程编程中,不同的线程占据不同的内存空间,因此你写的线程函数一旦运行完毕就会自动销毁,而Form2 f =new Form2在线程函数中定义,显然f这个对象是隶属于这个线程的,线程销毁则f也相应被销毁,从思路上解决,一种是设置这个Form2对象为一个全局的对象,不要再线程函数中创建;另一种是在f.show()之后必须等待用户某类操作才销毁,例如将f显示为模式窗体。
关于第二个问题:
这类问题在C#中常规的解决是用委托来进行的,示例如下:
private void button1_Click(object sender, EventArgs e)
{
Thread th = new Thread(aa);
th.Start();
}
delegate void doSomething();
private void aa()
{
if (this.InvokeRequired)
{
doSomething ds= new doSomething(aa);
this.Invoke(ds);
return;
}
ShowChar('A');
}
public void ShowChar(char ch)
{
lock (this)
{
textBox1.Text += ch;
}
}
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息