确保 SqlDependency 已停止

Ensure SqlDependency was Stopped

SqlDependency 在应用程序启动时启动并在应用程序停止时停止。可能存在 SqlDependency.Stop() 失败的情况(例如,连接到数据库时出现问题)。据我了解,SqlDependency 基础结构无论如何都会在超时时被删除。

但我不明白 SqlDependency.Stop() 还能做什么?

在 SqlDependency.Start() 之前调用 SqlDependency.Stop() 有意义吗?

Does it make sense to call SqlDependency.Stop() before SqlDependency.Start()?

如果未调用 Start(),则调用 Stop() 是空操作。我们可以查看 SqlDependency.cs 参考源

   internal static bool Stop(string connectionString, string queue, bool useDefaults, bool startFailed) {
            ...
            bool result = false;

            lock (_startStopLock) {
                if (null != _processDispatcher) { // If _processDispatcher null, no Start has been called.
                    ....
                }
            }
            return result;

所以它没有伤害,但不应该需要它。