gpt4 book ai didi

wpf - 我应该在后台线程中运行所有内容吗?

转载 作者:行者123 更新时间:2023-12-03 13:18:07 24 4
gpt4 key购买 nike

我正在设计一个可能在等待来自服务器(数据库或Internet)的数据时挂起的应用程序,问题是我不知道如何最好地应对可能需要时间的众多不同地方。

我很高兴在访问发生时向用户显示“正在加载”对话框,但理想情况下,我不希望它在短期运行中突然消失。

Microsoft word似乎可以很好地处理此问题,就像单击按钮一样,该操作需要很长时间,几秒钟后,您会看到一个“正在运行..”对话框。该操作仍然是同步的,您不能中断该操作。但是,如果相同的操作很快发生,您显然不会得到对话框。

我很高兴(可以)设计一些通用的后台工作线程处理程序,并且99%的数据处理已通过静态原子方法完成,但是如果可以的话,我想在此方法上进行最佳实践。

如果有人有模式,代码或建议,我都欢迎

干杯

最佳答案

Microsoft word appears to handle this quite nicely, as if you click a button and the operation takes a long time, after a few seconds you get a 'working..' dialog. The operation is still synchronous and you can't interrupt the operation. However if the same operation happens quickly you obviously don't get the dialog.



如果这是您想要的行为...

您可以通过在BackgroundWorker周围包装一个类来相当轻松地处理此问题。正好在DoWork事件的开始时间和第一份进度报告的时间之间。如果经过了一定的时间,则可以显示对话框-否则,请阻止(因为这是一个简短的过程)。

话虽如此,只要您正在进行可以异步处理的工作,我建议您以这种方式进行。即使在很短的时间间隔内也不要阻塞用户界面,这是更好的选择。通过使用 task parallel library,这在.NET 4(或Rx框架中的3.5)中变得更加简单。

关于wpf - 我应该在后台线程中运行所有内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2268243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com