【发布时间】:2019-03-01 21:18:16
【问题描述】:
晚上好,
在我的 SignalR 应用程序中,我有一个“同时”为所有用户运行的 javascript 计时器。在这个计时器结束时,一个服务器函数被调用,这就是这个问题的开始。 由于该函数在计时器结束时调用,因此每个连接的用户都会同时调用它,这是不必要的,因为它将为所有连接的用户返回相同的输出。作为一个逻辑上复杂的功能,让服务器为所有用户不必要地运行它会造成很大的资源浪费。
我怎样才能让它只运行一次(可能是第一次调用它(直到下一个计时器停止))?
提前谢谢你
【问题讨论】:
-
您可以使用静态布尔变量来跟踪这一点。将变量默认为 false 并在第一次执行时将其设置为 true。如果此 bool 设置为 true 以供将来执行,则忽略执行。或者在您设置的数据库中保留一个标志,并使用上述相同的逻辑进行检查。
-
@JakoBasson 谢谢。我考虑了数据库解决方案,但认为这会浪费资源(不确定是否发出所有这些请求只是为了了解这样的状态会在现实世界中产生影响)。静态变量听起来像我要找的东西,但老实说,我对这些状态变量并不是很熟悉,它是在类中声明为静态的变量吗?
-
它是在类中声明为静态的变量吗?是的。这是一个可能对您有帮助的链接:stackoverflow.com/questions/14154892/…
-
@JakoBasson 非常感谢。这解决了很多问题。我什至不知道我怎么会对这么简单的方面一无所知
标签: c# asp.net signalr signalr-2