Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不同线程中的分组框_C#_Asp.net_Multithreading - Fatal编程技术网

C# 不同线程中的分组框

C# 不同线程中的分组框,c#,asp.net,multithreading,C#,Asp.net,Multithreading,我的软件中有5个分组框,我想以不同的方式运行它们,例如,我有一个分组框,它需要大约20-30分钟的时间,直到我的软件挂起。所以我想让其他功能在某个特定的分组框工作时正常工作,并为其提供任何解决方案。分组框不工作。如果它们只是一个资源密集型任务的GUI,那么您可能希望异步(或多线程,取决于您的需求)运行该任务,并且仅将GUI用于设置/更新/其他用途。关键是永远不要在GUI线程上做太多的工作——如果一个GUI操作需要50-100毫秒,那么它可能应该在其他地方完成。请注意,使用await可以很容易地正

我的软件中有5个分组框,我想以不同的方式运行它们,例如,我有一个分组框,它需要大约20-30分钟的时间,直到我的软件挂起。所以我想让其他功能在某个特定的分组框工作时正常工作,并为其提供任何解决方案。

分组框不工作。如果它们只是一个资源密集型任务的GUI,那么您可能希望异步(或多线程,取决于您的需求)运行该任务,并且仅将GUI用于设置/更新/其他用途。关键是永远不要在GUI线程上做太多的工作——如果一个GUI操作需要50-100毫秒,那么它可能应该在其他地方完成。请注意,使用
await
可以很容易地正确执行此操作-如果不可用,那么
BackgroundWorker
可能是最好的选择。但请注意,它并不能使您避免同步问题

你能给我一个建议,我有一个任务,发送消息后,我调用线程。睡眠(5000)。有一个日志文件可以对此进行跟踪,因此我需要在发送或取消发送消息任务时操作日志文件,那么我应该使用什么来发送消息呢button@Kirtesh
BackgroundWorker
可以处理所有这些问题。重写代码的最简单方法是在“发送”按钮中启动后台工作程序-后台工作程序可以检查取消,将进度发布到GUI,等等。例如,更好的方法是使用
wait Task.Delay(5000)
,因为你无论如何都在等待,所以没有必要浪费一个线程。除了调试之外,
Thread.Sleep
很少有罕见的用例,这不是一个好的用例:)如果我的send按钮调用了太多的类,BackgroundWorker会工作吗?因为我正在使用whatsappapi,当它运行时send按钮调用了很多类runs@Kirtesh没有理由让send按钮必须这样做——只要让send按钮运行实际调用API方法的后台工作程序即可反过来或者,如果API是异步的,只需使用
wait
——很明显,它不涉及CPU工作,只涉及I/O。