我有一个Winform应用程序,它在网格视图中列出了一批发票。用户选择批次并单击按钮"Generate Invoices“。这个过程大约需要4-5分钟。当这是运行时,我将有一个字幕进度条,并希望禁用所有按钮。
我应该使用BackgroundWorker进程还是创建一个新线程来运行此任务?
发布于 2009-08-27 19:38:50
这正是BackgroundWorker所针对的任务类型。您应该将其推送到后台工作程序中,并允许其运行。这提供了一种简单的方式来更新进度条等。
没有理由为此创建您自己的线程。通过BackgroundWorker实现的ThreadPool将会工作得很好。
发布于 2009-08-27 19:33:27
后台工作进程的线程数量有限(20或25个,记不清了),使用其中一个线程将使该线程在4-5分钟内停止运行。一般来说,建议不要对长时间运行的任务使用后台工作进程,但是如果你一次只运行一个线程,这并不是什么问题。
在理想的世界里,我可能会创建自己的线程,但这需要努力和理解。
发布于 2009-08-27 19:38:49
一个单独的进程当然会更安全:如果它有任何问题(崩溃,无限循环,泄漏或其他)-这些问题不会影响父进程。
https://stackoverflow.com/questions/1343311
复制相似问题