• 怎么在thread中打开一个窗体(转载)


    有很多朋友不知道怎么在thread中打开一个窗体,总是说没有反应,下面我就说说这方面自己的经验。代码如下:

    private void ThreadFunc()

    {

        //run your coding;

        Form temp = new Form();

        temp.Show();

        //run your coding;

    }

    private void button1_Click(object sender, System.EventArgs e)

    {

        FormThread = new Thread( new ThreadStart( ThreadFunc ) );

        FormThread.Start();

    }

     

    像上面的代码,若点击button按钮,大家可以看到被创建的窗体闪了一下,就消失了,这是因为你在线程中建的窗体,所有的资源都是属于这个线程的,所以当这个线程结束后,它的资源也被回收了,当然C#也就自动把窗体给关闭了。

        正确的方法是用Invoke调用,代码如下:

    private void ThreadFunc()

    {

        MethodInvoker mi = new MethodInvoker(this.ShowForm);

        this.BeginInvoke(mi);

    }

    private void ShowForm( )

    {

        Form temp = new Form();

        temp.Show();

    }

    private void button1_Click(object sender, System.EventArgs e)

    {

        FormThread = new Thread( new ThreadStart( ThreadFunc ) );

        FormThread.Start();

    }

    备注:不使用invoke()方法,也可以在线程中用Showdialog()方法来显示这个new form.

  • 相关阅读:
    [moka同学笔记]yii2.0缓存
    [moka同学笔记]yii2.0查询数据库
    [moka同学笔记]yii2.0数据库操作以及分页
    [moka同学笔记]yii2.0表单的使用
    [moka同学笔记]bootstrap基础
    yii2时间日期控件的使用[转]
    java基础练习[一]
    上传照片
    selenium截图功能
    pip更新报错问题
  • 原文地址:https://www.cnblogs.com/sql4me/p/1431496.html
Copyright © 2020-2023  润新知