Изображение, если хотите, WPF-приложения Visual Studio 2008 с одним окном, содержащим ListBox. Это приложение содержит метод, описанный ниже, который связывает ListBox с содержимым таблицы базы данных.
В этом приложении также реализован контракт на обслуживание WFC, на котором размещена указанная служба WCF.
Приведенный ниже метод привязки данных вызывается как при нажатии кнопки в окне, так и в ответ на метод, вызываемый удаленно из службы WCF, размещенной приложением.
При вызове нажатием кнопки привязка работает правильно, и в списке отображается содержимое таблицы базы данных. Я могу вставить некоторые записи в базовую таблицу, нажать кнопку, и содержимое списка обновится, чтобы отразить новые записи. Однако при удаленном запуске через службу WCF любые изменения в базе данных не отражаются в списке. После пошагового выполнения кода набор данных содержит правильное представление таблицы, но поле списка сохраняет предыдущее представление таблицы и не отражает содержимое набора данных.
Сначала я думал, что это звучит как проблема с многопоточностью, поэтому я попытался использовать объекты Dispatcher, но безрезультатно. Из моих расследований оба звонка все равно принимаются в потоке пользовательского интерфейса.
Любые предложения приветствуются - это, наверное, что-то ослепительно очевидное, зная мою удачу ...
private void BindData()
{
SqlConnection connection;
using (connection = new SqlConnection(CONNECTION_STRING))
{
DataSet dtSet = new DataSet();
SqlCommand command = new SqlCommand("SELECT * FROM TheTableWithMyStuffIn", connection);
SqlDataAdapter adapter = new SqlDataAdapter();
connection.Open();
adapter.SelectCommand = command;
adapter.Fill(dtSet, "TheTableWithMyStuffIn");
listBox1.DataContext = dtSet;
}
}
ОБНОВЛЕНИЕ: Я заново реализовал механизм удаленного уведомления, чтобы использовать удаленное взаимодействие, а не WCF, и привязка данных теперь работает, когда она вызывается как удаленно, так и локально. Должен быть какой-то контекстуальный смысл использования WCF?