Самостоятельное размещение WCF внутри WPF

Благодаря ответу Кента Бугарта все прямо сейчас. Большое спасибо за все ответы!


Привет,

Мне нужно самостоятельно разместить службу WCF внутри графического интерфейса WPF. Я использую ServiceHost.

Но я до сих пор не могу решить проблему.

Сначала я размещаю сервис:

ServiceHost host;
Service.ISORClient service = new Service.SORClient();
//The next are in window constructor
host = new ServiceHost(service);
host.Open();

И я хочу обновить данные, когда я нажимаю кнопку, поэтому:

dataGrid1.ItemsSource = service.GetPatients();

Это работает, но только один раз. Если я попытаюсь обновить его более одного раза, это просто не сработает.

Вот мое объявление службы WCF:

    [ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
    public class SORClient : ISORClient
    ... and all the methods come here...

Странно то, что когда я подключаюсь из клиентского приложения. Я могу получить все данные, и все правильно. Я просто не могу получить данные в GUI (ну, я могу получить их только один раз).

Заранее большое спасибо!


person payek    schedule 24.12.2010    source источник
comment
попробуйте разделить проблемы. Я не думаю, что WPF имеет к этому какое-то отношение, но... возможно, поможет начать с этой простой консольной среды. codeproject.com/KB/WCF/generic_wcf_host.aspx   -  person kenny    schedule 24.12.2010
comment
Проблемы в стороне Мне интересно, почему вы хотите разместить WCF в клиентском приложении? Вы фактически строите толстый клиент, так зачем нести накладные расходы на размещение бизнес-логики приложения в службе?   -  person Pero P.    schedule 24.12.2010
comment
Что вы имеете в виду, когда говорите, что это не работает? Выдает ли он исключение, не возвращает данные или возвращает те же данные? Можете ли вы добавить точку останова к методу GetPatients() и убедиться, что он срабатывает при вызове из WPF клиента?   -  person decyclone    schedule 24.12.2010


Ответы (1)


Оставив в стороне вопросы дизайна, я подозреваю, что вы были укушены равными () переопределить проблему.

Попробуйте это, чтобы доказать это:

dataGrid1.ItemsSource = null;
dataGrid1.ItemsSource = service.GetPatients();
person Kent Boogaart    schedule 24.12.2010
comment
Исходный пост в блоге, на который вы ссылались, исчез, поэтому я исправил его для вас. Я знаю, что это старый ответ, но можете ли вы опубликовать здесь часть своего поста, чтобы объяснить проблему, поскольку слепые ссылки на внешние ресурсы без объяснения или контекста не приветствуются? - person slugster; 26.04.2015