WCF duplex
От: Аноним  
Дата: 15.11.13 14:39
Оценка:
Есть такой простой пример:

    interface IClientContract
    {
        [OperationContract(IsOneWay = true)]
        void Send(string message);
    }

    [ServiceContract(CallbackContract = typeof(IClientContract))]
    interface IServerContract
    {
        [OperationContract(IsOneWay = false)]
        int GetRandomValue();
    }

    class Server : IServerContract
    {
        public int GetRandomValue()
        {
            OperationContext.Current.GetCallbackChannel<IClientContract>().Send("Генерация числа");
            try { return new Random().Next(); }
            finally { OperationContext.Current.GetCallbackChannel<IClientContract>().Send("Генерация числа закончена"); }
            
        }
    }

    class Client : IClientContract
    {
        public void Send(string message)
        {
            Console.WriteLine(message);
        }
    }


В консольной реализации клиента все отрабатывает на ура!!! А вот стоит клиентскую часть запустить на WinForm или WPF (например при нажатии кнопки, происходит обращение к серверу, который отправляет сообщение, которое нужно отобразить в текстовом поле) происходит зависание. Проблема решается если вызов метода Send производить в отдельном потоке и то иногда начинает висеть клиент.
Подскажите откуда ноги растут И как это дело можно подправить?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.