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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2010, 03:08   #1
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию вызов callback

запускаю сервис, запускаю клиент. на клиенте вызываю метод получения данных с сервера но программа просто останавливается(она не зависает, а просто не отвечает ни на что, когда форма зависает то ее можна переместить и курсор меняется, а тут курсор не меняется и форму переместить нельзя) на строчке калбэка callback.CallbackGetData(value);, который реализован на клиенте и сервере. т.е. я хочу получить данные и в ответ на это чтобы на сервере было ответное действие(написать что клиент получил данные). как мне добиться того чтобы калбэк начал выполняться?

Код:
вот клиент:
    public partial class Form1 : Form, IService1Callback
    {
        InstanceContext context;

        public Form1()
        {
            InitializeComponent();
            context = new InstanceContext(this);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Proxy p = new Proxy(context);
            button1.Text = p.GetData(345);
        }

        #region Члены IService1Callback

        public void CallbackGetData(int value)
        {
            this.Text = "callback. user get: " + value;
        }

        #endregion
-----------------------

вот прокси:
 public class Proxy : IService1
    {
        InstanceContext context;

        public Proxy(InstanceContext context)
        {
            this.context = context;
        }

        public string GetData(int value)
        {
            DuplexChannelFactory<IService1> factory = new DuplexChannelFactory<IService1>(context, "tcpBinding");
            factory.Open();
            IService1 serviceInstance = factory.CreateChannel();

            string returnString = serviceInstance.GetData(value);
            factory.Close();
            return returnString;
        }
    }
------------------

вот сервис:
 public class Service1 : IService1
    {
        public string GetData(int value)
        {
            IService1Callback callback = OperationContext.Current.GetCallbackChannel<IService1Callback>();
            callback.CallbackGetData(value);

            string returnString = "you enter: " + value;

            return returnString;
        }
    }
Vistar вне форума Ответить с цитированием
Старый 24.10.2010, 09:35   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Я честно говоря сколько не смотрел код, так и не смог понять логики его. Почему не так сделать?

Код:
public void CallbackGetData(int value)
{
    this.Text = "callback. user get: " + value;
}

public delegate void CallbackGetDataDelegate(int value);

{
    var callback = new CallbackGetDataDelegate(CallbackGetData);

    callback(123456); // вызов callback'a
}
BOBAH13 вне форума Ответить с цитированием
Старый 24.10.2010, 12:50   #3
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Я честно говоря сколько не смотрел код, так и не смог понять логики его. Почему не так сделать?

Код:
public void CallbackGetData(int value)
{
    this.Text = "callback. user get: " + value;
}

public delegate void CallbackGetDataDelegate(int value);

{
    var callback = new CallbackGetDataDelegate(CallbackGetData);

    callback(123456); // вызов callback'a
}
этот код должен работать?
Vistar вне форума Ответить с цитированием
Старый 24.10.2010, 14:15   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Vistar Посмотреть сообщение
этот код должен работать?
А метод проб и ошибок уже отменили?
BOBAH13 вне форума Ответить с цитированием
Старый 24.10.2010, 14:17   #5
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
А метод проб и ошибок уже отменили?
просто у меня не работает
Vistar вне форума Ответить с цитированием
Старый 24.10.2010, 14:25   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Vistar Посмотреть сообщение
просто у меня не работает
Я видимо должен угадать что подразумевается под
Цитата:
не работает
BOBAH13 вне форума Ответить с цитированием
Старый 24.10.2010, 14:30   #7
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Я видимо должен угадать что подразумевается под
ну это еще нормально, объявляем делегат:
Код:
public delegate void CallbackGetDataDelegate(int value);
но это к чему?? студия ругается на то что CallbackGetData должен быть статическим, метод должен возвращать значение.. но ведь это даже не метод, а какой то кусок кода
Код:
{
    var callback = new CallbackGetDataDelegate(CallbackGetData);

    callback(123456); // вызов callback'a
}
может я не понял и это надо в какой то метод бросать?
Vistar вне форума Ответить с цитированием
Старый 24.10.2010, 14:37   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
но ведь это даже не метод, а какой то кусок кода
Где ваш мозг? Извините меня, я просто не знал что каждый момент, каждую строчку я должен был разжевать.
Цитата:
CallbackGetData должен быть статическим
Ну это думаю не правда
Опять прошу вас, когда какие то ошибки, то кусок кода + ошибка которую выдает компилятор студии в Output + номер строки с ошибкой. Где это все? Я не вижу, помочь с таким подходом не могу.

Цитата:
а можете подкорректировать мой проектик если я скину его сюда?
Смотря сколько вы заплатите.

Последний раз редактировалось BOBAH13; 24.10.2010 в 14:47.
BOBAH13 вне форума Ответить с цитированием
Старый 24.10.2010, 14:46   #9
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию

BOBAH13, а можете подкорректировать мой проектик если я скину его сюда?
Vistar вне форума Ответить с цитированием
Старый 24.10.2010, 14:49   #10
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Смотря сколько вы заплатите.
ну так я ж не с 0 прошу написать, а только дописать пару строчек.
Vistar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Callback из dll - как? flug Общие вопросы Delphi 2 30.09.2010 13:13
CallBack из библиотеки возможно ли это? DarkEvil Общие вопросы Delphi 20 22.09.2009 15:12
Описание в Delphi Си-шных callback-ов. Bobby Win Api 3 03.04.2009 09:53
Клиент-серверное приложение: Callback MaTBeu Общие вопросы C/C++ 13 02.06.2008 20:27
Callback Wolfheart Win Api 12 02.06.2007 23:13