正在运行的事件怎么终止

时间:2021-12-02 04:59:57
窗体1 点确定按钮(引发单击事件)--->开始一个庞大的数据处理,大概要处理20分钟
  --->同时弹出窗体2,有一个自定义控件,控件上有进度条和取消按钮(进度条功能正常实现了)
现在,我中途点窗体2控件中的取消,怎么能让窗体1的数据处理立刻终止.
目前遇到的问题是,我点取消,只是关闭了窗体2,而窗体1单击事件仍然在跑,也就是说事件还在执行.怎么能让窗体1的数据处理立刻终止呀??????????????

6 个解决方案

#1


帮顶,我也想知道 正在运行的事件怎么终止

#2


用一个新线程调用数据处理的方法,取消时阻塞这个线程

#3


第一搞个线程去做,然后终止线程
第二,在循环中加上加上个变量判断,比如 _exit就是变量,你控制它就行了
            while (true)
            {
                //你的工作
                Application.DoEvents();
                if (_exit)
                    break;
            }

#4


开个线程,处理数据。
取消时,暴力点的就是kill线程。
温柔点的,就是设置个结束标志,处理数据时判断结束标志,如果为true,结束处理数据,线程自己结束。

#5


关键是第一个窗体中的button1-Click()事件中的查询语句正在进行,而把这条查询语句发动线程中,意味着他不能再调用Form1中传来的参数了,必须再用委托把所有用到的参数、方法全委托,是不是太麻烦了?
是不是应该在进度条控件的取消事件中做文章??????

#6


没人回答,自己顶一下

#1


帮顶,我也想知道 正在运行的事件怎么终止

#2


用一个新线程调用数据处理的方法,取消时阻塞这个线程

#3


第一搞个线程去做,然后终止线程
第二,在循环中加上加上个变量判断,比如 _exit就是变量,你控制它就行了
            while (true)
            {
                //你的工作
                Application.DoEvents();
                if (_exit)
                    break;
            }

#4


开个线程,处理数据。
取消时,暴力点的就是kill线程。
温柔点的,就是设置个结束标志,处理数据时判断结束标志,如果为true,结束处理数据,线程自己结束。

#5


关键是第一个窗体中的button1-Click()事件中的查询语句正在进行,而把这条查询语句发动线程中,意味着他不能再调用Form1中传来的参数了,必须再用委托把所有用到的参数、方法全委托,是不是太麻烦了?
是不是应该在进度条控件的取消事件中做文章??????

#6


没人回答,自己顶一下