Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2011, 23:23   #1
haskOo
Новичок
Джуниор
 
Регистрация: 18.10.2011
Сообщений: 1
По умолчанию WCF. Не передается параметр от службы к клиенту

Добрый день!
Есть 3 приложения:сервис и 2 клиента.Первый клиент отправляет на сервис строку, и если второй клиент подключен и подписан на рассылку, то эта строка сразу же ему отправляется. И эту строку нужно вывести в текстбокс.Только вот по завершении работы callback-функции это строка становится пустой...

Служба:

[ServiceContract]
public interface IService
{
[OperationContract(Name="SendMessage ToService")]
void SendMessage(string str);
}

[ServiceContract(CallbackContract = typeof(IEvents))]
public interface ISubscribe
{
[OperationContract]
void Subscribe();

[OperationContract]
void Unsubscribe();
}

public interface IEvents
{
[OperationContract(IsOneWay = true)]
void PublishXDocument(string str);
}


public class Service : IService, IConnectionState, ISubscribe
{
delegate void Publisher(string str);
static Publisher PublishEvent;
static SendToClient content;

public void SendMessage(string dataFromPublisher)
{
FireEvent(dataFromPublisher);
}

public void Subscribe()
{
content = new SendToClient();
content.callback = OperationContext.Current.GetCallbac kChannel<IEvent​s>();
PublishEvent += content.Send;
}

public static void FireEvent(string dataToSubscriber)
{
try
{
PublishEvent(dataToSubscriber);
}
catch
{
Console.WriteLine("no subscribers");
}
}

public class SendToClient
{
public IEvents callback = null;

public void Send(string dataToSubscriber)
{
callback.PublishXDocument(dataToSub scriber);
}
}
}

На первом клиенте выполняется:

public partial class Client1Form : Form
{
ServiceClient client = new ServiceClient("EndPt1");
client.SendMessageToService(text);
}


на втором клиенте:

public partial class Client2Form : Form, ISubscribeCallback
{
static InstanceContext context = new InstanceContext(new Client2Form());
static SubscribeClient subscribeClient = new SubscribeClient();

public void PublishXDocument(string publishingData)
{
GetData(publishingData);
}
private void GetData(string publishingData)
{
textBox1.Text = publishingData;
}
}

И вроде в textBox1.Text записываеся приходящая строка, но когда функция PublishXDocument заканчивает выполнение - publishingData и textBox1.Text становятся пустыми.Это мой первый проект на WCF.Помогите разобраться пожалуйста!!!
haskOo вне форума Ответить с цитированием
Старый 19.10.2011, 20:38   #2
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

Код:
textBox1.Text += publishingData;
?
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аргумент в функцию потока не передается Silly Student Win Api 3 19.10.2011 12:42
Не передается значение переменной в PHP w_wolf Помощь студентам 3 08.02.2011 20:00
не передается картинка TCPClient/Server Lokos Работа с сетью в Delphi 1 05.10.2010 08:14
WCF - ошибка при запуске службы Дамир Общие вопросы .NET 1 12.04.2010 23:35
Почему управление передается в процедуру? Sergee Общие вопросы Delphi 13 15.01.2009 01:37