如何停止仍然按钮停止计算的功能?

时间:2013-08-30 12:53:54

标签: c++

我使用vs2010编写了一个应用程序visual c ++, 我有两个按钮:“开始”和“停止”,第一个调用一个需要花费大量时间来处理的函数,所以在某个时刻我想停止计算按停止按钮。但是在我的应用程序中,按钮启动似乎仍然被点击(我认为它正在等待函数的返回)并且所有其他按钮似乎被禁用。即使我有一个很棒的停止功能,我也无法激活,因为我无法点击按钮停止。解决方案,想法,使用线程,简单的例子?感谢。

5 个答案:

答案 0 :(得分:2)

您需要在另一个线程中运行计算。否则你的gui会冻结,直到你的计算结束(因为此刻只能完成一件事)。

如果您正在使用一些现代编译器,请查看std :: thread。

其他解决方案是提升线程甚至是微软线程。

答案 1 :(得分:1)

如果你的计算是循环,那么如果你的用户想要停止计算,那么在每次迭代时都可以很容易地检查。

在计算线程中:

while(compute){
    // one loop of computation
}

虽然您的GUI线程可以通过computation按钮将stop设置为false。 我希望它有所帮助

注意:在c ++中,如在Java Swing等中,GUI具有它自己的线程(对开发人员来说真的不可见),你永远不应该在其中执行繁重的任务。例如,按钮的每个回调都应尽可能小,以保持GUI响应。该线程的工作只是为了推动您的应用程序。

答案 2 :(得分:0)

Button 1 -> onClick = 
{
    start thread -> { do stuff here }
}

BUtton 2 -> onClick = 
{
    close thread
}

强行关闭线程时要小心,因为你可能会泄漏内存!

答案 3 :(得分:0)

答案 4 :(得分:-1)

首先,您需要导入命名空间

使用System.Threading;

然后使用以下代码:

Thread T=new Thread(Your Code Goes method name);


your method name()
{
// your code goes here
}
T.Start();

then 


T.Abort();