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.

  • 相关阅读:
    BZOJ1511: [POI2006]OKR-Periods of Words
    BZOJ1009: [HNOI2008]GT考试
    BZOJ1355: [Baltic2009]Radio Transmission
    BZOJ1415: [Noi2005]聪聪和可可
    BZOJ1004: [HNOI2008]Cards
    UVA11077 Find the Permutations
    LA3641 Leonardo's Notebook
    UVA10294 Arif in Dhaka
    UVA11762 Race to 1
    UVA11427 Expect the Expected
  • 原文地址:https://www.cnblogs.com/sql4me/p/1431496.html
Copyright © 2011-2022 走看看