zoukankan      html  css  js  c++  java
  • 怎么在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.

  • 相关阅读:
    iOS 快语句(block)浅析
    iOS中控制器的创建
    iOS中的截屏
    iOS&UITextView中的placeholder属性
    iOS归档,解档
    iOS内存警告浅析
    scrollWidth,clientWidth,offsetWidth的区别
    css3学习笔记
    页面重构的常用规范
    页面重构的职业定位
  • 原文地址:https://www.cnblogs.com/sql4me/p/1431496.html
Copyright © 2011-2022 走看看