关于带参数的线程启动。解决办法
关于带参数的线程启动。
public class TestThread
{
public ucTestScriptTree _tree=new ucTestScriptTree ();
public void ForTest(ucTestScriptTree tn)
{
tn.BeginImport(tn.m_node, tn.list);
}
private void OnShown(object sender, EventArgs e)
{
////1
//Thread m_Thread = new Thread(new ThreadStart(this.ThreadBeginImport));
//m_Thread.Name = "UpImport_Thread";
//m_Thread.Start();
////2
//Thread m_Thread = new Thread(new ParameterizedThreadStart(this.ForTest));
//m_Thread.start(_tree);
////3
ThreadPool.QueueUserWorkItem(new WaitCallback(this.ForTest), _tree);
}
}
分别企图用以上3中方法启动这个带参数的线程,但是都没能成功。直接编译错误
请教各位,这个线程应该怎么才可以启动啊~?~
先谢谢了~
------解决方案--------------------
public class TestThread
{
public ucTestScriptTree _tree=new ucTestScriptTree ();
public void ForTest(ucTestScriptTree tn)
{
tn.BeginImport(tn.m_node, tn.list);
}
private void OnShown(object sender, EventArgs e)
{
////1
//Thread m_Thread = new Thread(new ThreadStart(this.ThreadBeginImport));
//m_Thread.Name = "UpImport_Thread";
//m_Thread.Start();
////2
//Thread m_Thread = new Thread(new ParameterizedThreadStart(this.ForTest));
//m_Thread.start(_tree);
////3
ThreadPool.QueueUserWorkItem(new WaitCallback(this.ForTest), _tree);
}
}
分别企图用以上3中方法启动这个带参数的线程,但是都没能成功。直接编译错误
请教各位,这个线程应该怎么才可以启动啊~?~
先谢谢了~
------解决方案--------------------
- C# code
//將ForTest修改如下: public void ForTest(object state) { ucTestScriptTree tn = (ucTestScriptTree)state; tn.BeginImport(tn.m_node, tn.list); } //使用下面的代碼即可啟動線程,亦即樓主所列之第二種方法 Thread m_Thread = new Thread(new ParameterizedThreadStart(ForTest)); m_Thread.Start(_tree);
------解决方案--------------------
public ucTestScriptTree _tree = new ucTestScriptTree();
public void ForTest( object obj )
{
ucTestScriptTree tn = ( ucTestScriptTree )obj;
tn.BeginImport( tn.m_node, tn.list );
}