using System;
namespace CSNewTest
{
    /// <summary>
    /// Summary description for clsThreadFun.
    /// </summary>
    public class clsThreadFun
    {
       private string strUserName;
       public string UserName
        {   get{ return strUserName;}
            set{ strUserName = value; }
        }
        public clsThreadFun( string sUserName)
        {
            //
            // TODO: Add constructor logic here
            //
            strUserName = sUserName;
        }
         /// <summary>
        /// Thread interface function
        /// </summary>
        public void ThreadFun()
        {
            //Detail thread handle 
        }
    }}
    接着,是调用代码: 这个在窗口里(不是一个类)。    clsThreadFun myThreadFun = new clsThreadFun( "Test" );    //Set parameter through “myThreadFun.UserName”    Thread myThread = new Thread( new ThreadStart( myThreadFun.ThreadFun ) );    myThread.Start();    我想在ThreadFun中对本窗口进行操作。 是不是要将本窗口对象也传进clsThreadFun类中去才可以。帮忙看看  怎么样最合适 方便。

解决方案 »

  1.   

    to 我想在ThreadFun中对本窗口进行操作。 是不是要将本窗口对象也传进clsThreadFun类中去才可以。不能简单的传进去,在子线程中控制某个窗体的控件需要用invoke来做。
    例如:
    /// <summary>
    /// Summary description for clsThreadFun.
    /// </summary>
    public class clsThreadFun
    {
    private string strUserName;
    public string UserName

    get{ return strUserName;}
    set{ strUserName = value; }
    }
    private yourFormClass pParent;

    public clsThreadFun( string sUserName, yourFormClass pMain )
    {
    //
    // TODO: Add constructor logic here
    //
    strUserName = sUserName;
    pParent = pMain;
    }

    /// <summary>
    /// Thread interface function
    /// </summary>
    public void ThreadFun()
    {
    //Detail thread handle
    //You can get some properties or members info using "pMain.*"

    // If you wanna operate some controls of main form
    // pls read: http://blog.csdn.net/knight94/archive/2006/03/16/626584.aspx
    }
    }
      

  2.   

    你的类中做一个静态Form变量,然后把当前窗体对象引用传进去就可以了使用了