我编写了一个可以完成大量数学运算的函数,完成工作大约需要10分钟。我试图通过表单上的按钮调用此功能(Windows窗体应用程序)。但现在的问题是在10分钟内,主要形式停止响应,直到功能完成其工作。
我怎么能解决这个问题......任何想法!
答案 0 :(得分:2)
您可以为计算分配一个新线程,以便表单不必等待计算完成以继续执行(即监听和响应事件等)。
答案 1 :(得分:1)
问题是,当你的10分钟功能正常工作时,程序的其余部分不会被执行。特别是,它无法执行渲染。 (即让你的表格回复)。
解决方案是使用threads。
答案 2 :(得分:1)
如前所述,您应该将长时间运行的任务分配给工作线程或线程池线程。
请记住,线程池线程数量有限。另外,Windows表单不是线程安全的,因此您不应该直接从创建的线程更新表单。您可以使用InvokeRequired。
答案 3 :(得分:0)
在这种情况下,最好使用BackgroundWorker类。详情请见以下链接。
http://stuff.seans.com/2009/05/21/net-basics-do-work-in-background-thread-to-keep-gui-responsive/