Visual c++ 主窗体停止响应

Visual c++ 主窗体停止响应,visual-c++,c++-cli,Visual C++,C++ Cli,我写了一个函数,它可以做很多数学运算,完成它的工作大约需要10分钟。我试图通过窗体(Windows窗体应用程序)上的按钮调用此函数。但现在的问题是在10分钟内,主窗体停止响应,直到函数完成其工作 我怎样才能解决这个问题。。。任何想法 问题是,当您的10分钟功能运行时,程序的其余部分不会执行。特别是,它无法执行渲染。(即,让您的表单作出响应) 解决方法是使用。问题是,当您的10分钟函数工作时,程序的其余部分不会执行。特别是,它无法执行渲染。(即,让您的表单作出响应) 解决方案是使用。您可以为计算分

我写了一个函数,它可以做很多数学运算,完成它的工作大约需要10分钟。我试图通过窗体(Windows窗体应用程序)上的按钮调用此函数。但现在的问题是在10分钟内,主窗体停止响应,直到函数完成其工作


我怎样才能解决这个问题。。。任何想法

问题是,当您的10分钟功能运行时,程序的其余部分不会执行。特别是,它无法执行渲染。(即,让您的表单作出响应)


解决方法是使用。

问题是,当您的10分钟函数工作时,程序的其余部分不会执行。特别是,它无法执行渲染。(即,让您的表单作出响应)


解决方案是使用。

您可以为计算分配一个新线程,这样表单就不必等待计算完成才能继续执行(即侦听和响应事件等)

您可以为计算分配一个新线程,这样表单就不必等待计算完成才能继续执行(即侦听和响应事件等)。

如前所述,您应该将长时间运行的任务分配给工作线程或线程池线程


请记住,线程池线程的数量是有限的。此外,Windows窗体不是线程安全的,因此不应直接从创建的线程更新窗体。您可以使用InvokeRequired。

如前所述,您应该将长时间运行的任务分配给工作线程或线程池线程


请记住,线程池线程的数量是有限的。此外,Windows窗体不是线程安全的,因此不应直接从创建的线程更新窗体。您可以使用invokererequired。

在这种情况下,最好使用BackgroundWorker类。详情请参见下面的链接


在这种情况下,最好使用BackgroundWorker类。详情请参见下面的链接