首页 新闻 赞助 找找看

winform为什么子线程的Abort()会导致整个程序的退出呢?

0
悬赏园豆:20 [已关闭问题] 关闭于 2011-11-26 16:45

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,这个又是为什么呢??

与卡的主页 与卡 | 初学一级 | 园豆:58
提问于:2011-08-24 11:25
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册