Thread threadInitForm;
//窗体的构造函数
public FrmMain()
{
InitializeComponent();
// 用一个后台线程初始化treeview控件
threadInitForm = new Thread(new ThreadStart(DelegateInitForm));
threadInitForm.IsBackground = true;
threadInitForm.Start();
}
//线程调用的函数
void DelegateInitForm()
{
DeleInitTree del = new DeleInitTree(InvokeInitForm);
this.Invoke(del);
}
//最终调用的函数
void InvokeInitForm()
{
InitTree();//加载
threadInitForm.Abort();
}
----------------------------------------
奇怪的是,直接在vs里面调试就没事,直接运行debug文件夹里的exe文件就会退出,好迷惑
为什么我会知道是这个线程导致程序退出的呢,因为如果我不用线程来加载treeview的话,直接调用IniTree()函数就没问题,望高人指点
还有个问题,就是假如我这里不Abort(),而是Suspend()挂起,然后在某个地方想重新加载treeview的时候我调用threadInitForm.Resume()重新启动线程加载树,但是这句一运行就报错(线程不是用户挂起的;无法使其继续),线程的状态变成了stop,这个又是为什么呢??