2011-03-22 111 views
1

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

我该如何解决这个......任何想法!

回答

2

您可以分配用于计算一个新的线程,这样的形式就不必等待计算完成,继续执行(即倾听和响应事件等等)前面已经提到,你应该

1

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

解决方法是使用threads

1

将长时间运行的任务分配给工作线程或线程池线程。

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