C# 不同线程中的分组框
我的软件中有5个分组框,我想以不同的方式运行它们,例如,我有一个分组框,它需要大约20-30分钟的时间,直到我的软件挂起。所以我想让其他功能在某个特定的分组框工作时正常工作,并为其提供任何解决方案。分组框不工作。如果它们只是一个资源密集型任务的GUI,那么您可能希望异步(或多线程,取决于您的需求)运行该任务,并且仅将GUI用于设置/更新/其他用途。关键是永远不要在GUI线程上做太多的工作——如果一个GUI操作需要50-100毫秒,那么它可能应该在其他地方完成。请注意,使用C# 不同线程中的分组框,c#,asp.net,multithreading,C#,Asp.net,Multithreading,我的软件中有5个分组框,我想以不同的方式运行它们,例如,我有一个分组框,它需要大约20-30分钟的时间,直到我的软件挂起。所以我想让其他功能在某个特定的分组框工作时正常工作,并为其提供任何解决方案。分组框不工作。如果它们只是一个资源密集型任务的GUI,那么您可能希望异步(或多线程,取决于您的需求)运行该任务,并且仅将GUI用于设置/更新/其他用途。关键是永远不要在GUI线程上做太多的工作——如果一个GUI操作需要50-100毫秒,那么它可能应该在其他地方完成。请注意,使用await可以很容易地正
await
可以很容易地正确执行此操作-如果不可用,那么BackgroundWorker
可能是最好的选择。但请注意,它并不能使您避免同步问题 你能给我一个建议,我有一个任务,发送消息后,我调用线程。睡眠(5000)。有一个日志文件可以对此进行跟踪,因此我需要在发送或取消发送消息任务时操作日志文件,那么我应该使用什么来发送消息呢button@KirteshBackgroundWorker
可以处理所有这些问题。重写代码的最简单方法是在“发送”按钮中启动后台工作程序-后台工作程序可以检查取消,将进度发布到GUI,等等。例如,更好的方法是使用wait Task.Delay(5000)
,因为你无论如何都在等待,所以没有必要浪费一个线程。除了调试之外,Thread.Sleep
很少有罕见的用例,这不是一个好的用例:)如果我的send按钮调用了太多的类,BackgroundWorker会工作吗?因为我正在使用whatsappapi,当它运行时send按钮调用了很多类runs@Kirtesh没有理由让send按钮必须这样做——只要让send按钮运行实际调用API方法的后台工作程序即可反过来或者,如果API是异步的,只需使用wait
——很明显,它不涉及CPU工作,只涉及I/O。