SqlDependency не работает правильно MVVM - PullRequest
0 голосов
/ 15 мая 2018

Ошибка:

При использовании SqlDependency без указания значения параметров SqlDependency.Start () необходимо вызывать до выполнения команды, добавленной к экземпляру SqlDependency.

   public void someting()
    {     
        connection.Open();
            using (SqlCommand command = new SqlCommand("SELECT count(*) from users", connection))
            {
                SqlDependency.Start(ConfigurationManager.ConnectionStrings["StringConnexion"].ConnectionString, "someting");

            SqlDependency dependency = new SqlDependency(command);



                dependency.OnChange += new
                    OnChangeEventHandler(OnDependencyChange);


                using (SqlDataReader reader = command.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        var int32 = reader.GetInt32(0);
                        MessageBox.Show(int32.ToString());
                        UserCount = int32.ToString();

                    }
                }
            }

Я искал об этой ошибке, и это означает, что в ней говорится, что я должен запустить зависимость, которая у меня есть ... ну и что не так?

1 Ответ

0 голосов
/ 17 мая 2018

Я нашел пару вещей, которые могут помочь:

  1. SqlDependency.Start() можно вызывать только один раз для одного AppDomain.Таким образом, он должен быть как можно ближе к вашей точке входа.И это определенно должно быть как минимум выше вашего утверждения using() {}.Если вы называете это более одного раза, вы столкнетесь с проблемами.

    MDSN: https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/detecting-changes-with-sqldependency

    Обратите внимание на то, как SqlDependency.Start (...) в методе Initialize () полностью принадлежит его самому.

  2. Возвращает bool, поэтому вы можете проверить возвращаемое значение для отладки:

var isStarted = SqlDependency.Start( ... )

Попробуйте явно добавить Service=<SERVICE_NAME> в строку подключения (не подтверждено, если это действительно помогает, но, похоже, это работает для одного пользователя.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...