none
一个“类”中,不能多次调用“WCF 代理类”中同一方法??? RRS feed

  • 问题

  • 一个“类”中,不能多次调用“WCF 代理类”中同一方法???

    代码如下:

         private void BindBaseDatas()
            {
                string weburl = Application.Current.Host.Source.ToString();
                weburl = weburl.Substring(0, (weburl.Length - 23)) + "/ChartsService.svc";
                MyChartsService.ChartsServiceClient client = new MyChartsService.ChartsServiceClient("CustomBinding_ChartsService1", weburl);

                client.GetCodeDetailsEntityDataAsync("BldingFunction");
    client.GetCodeDetailsEntityDataCompleted+=new EventHandler<GetCodeDetailsEntityDataCompletedEventArgs>(client_GetCodeDetailsEntityDataCompleted2);


                client.GetCodeDetailsEntityDataAsync("MeterUseType");
    client.GetCodeDetailsEntityDataCompleted += new EventHandler<MyChartsService.GetCodeDetailsEntityDataCompletedEventArgs>(client_GetCodeDetailsEntityDataCompleted);


                BindYears();
            }

            void client_GetCodeDetailsEntityDataCompleted2(object sender, MyChartsService.GetCodeDetailsEntityDataCompletedEventArgs e)
            {
                tlb_Region.ItemsSource = e.Result;
                tlb_Region.SelectedIndex = 0;

                //GetMonitorDatas();
            }

            void client_GetCodeDetailsEntityDataCompleted(object sender, MyChartsService.GetCodeDetailsEntityDataCompletedEventArgs e)
            {
                RadMenuItem rmi_all = new RadMenuItem();

                rmi_all.Header = "总量";
                rmi_all.Tag = "";
                rmi_all.IsCheckable = true;
                rmi_all.IsChecked = true;

                rmi_Subentry.Items.Add(rmi_all);

                ObservableCollection<MyChartsService.CodeDetailsEntity> subentrys = e.Result;
                foreach (var st in subentrys)
                {
                    RadMenuItem rmi = new RadMenuItem();
                    rmi.Header = st.DpCodeName;
                    rmi.Tag = st.DpCodeId;
                    rmi.IsCheckable = true;

                    rmi_Subentry.Items.Add(rmi);
                }
            }

    问题:像这样的需求,需要多次调用“代理类”中的“同一方法"应该怎么办???这是一个WCF缺点啊。。。


    Science and technology is my lover.

    2012年5月30日 10:52

答案

全部回复

  • 可以多次啊

    为什么不可以呢

    你服务什么实例化模式?使用了会话?


    Frank Xu Lei--谦卑若愚,好学若饥
    [老徐的网站]:http://www.frankxulei.com/

    [老徐的博客]:http://54peixun.com/Author/frankxulei
    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    2012年5月31日 6:05
    版主
  • 可以多次啊

    为什么不可以呢

    你服务什么实例化模式?使用了会话?


    Frank Xu Lei--谦卑若愚,好学若饥
    [老徐的网站]:http://www.frankxulei.com/

    [老徐的博客]:http://54peixun.com/Author/frankxulei
    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    谢谢您,但是还是有点问题。

    实例化模式:WCF4.0  默认的“DataSerialize" 。  没有开启会话。。。

    问题1:

          如上面所示,在“BindBaseDatas()”方法中“两次”调用了“client.GetCodeDetailsEntityDataCompleted”,它们都委托给了同一个“client_GetCodeDetailsEntityDataCompleted”,这样怎么处理返回的数据???

    问题二:      

           如上面所示,在“BindBaseDatas()”方法中“两次”调用了“client.GetCodeDetailsEntityDataCompleted”,它们分别委托给“client_GetCodeDetailsEntityDataCompleted”个“client_GetCodeDetailsEntityDataCompleted”和“client_GetCodeDetailsEntityDataCompleted2”,   但是返回只有第二次调用服务返回的数据,怎么办???

    问题三:怎么实现多次调用同一个服务???

          

    比如:需要两次调用“GetMonitoringDatasEntity”服务方法,就要再创建一个“GetMonitoringDatasEntityTwo”服务方法,它们的参数和返回值都是一样的。

    这个问题可以解决吗???    Thanks  a  lot...    完整代码如下:

    private void BindBaseDatas()
      {
      string weburl = Application.Current.Host.Source.ToString();
      weburl = weburl.Substring(0, (weburl.Length - 23)) + "/ChartsService.svc";
      MyChartsService.ChartsServiceClient client = new MyChartsService.ChartsServiceClient("CustomBinding_ChartsService1", weburl);


      client.GetMonitoringDatasEntityAsync(monitortype, monitordate_type, monitordate_value, monitortype_type, monitortype_value, meterusetype, true);

      client.GetMonitoringDatasEntityCompleted += new EventHandler<GetMonitoringDatasEntityCompletedEventArgs>(client_GetMonitoringDatasEntityCompleted);


    client.GetMonitoringDatasEntityTwoAsync(monitortype, monitordate_type, monitordate_value, monitortype_type, monitortype_value, meterusetype, false);
      client.GetMonitoringDatasEntityTwoCompleted += new EventHandler<GetMonitoringDatasEntityTwoCompletedEventArgs>(client_GetMonitoringDatasEntityTwoCompleted);


    BindChart();
    }


    Science and technology is my lover.


    2012年6月1日 1:50
  • 这个问题好像重复了吧。

    快乐在于能够长时间的为自己认为值得的事情努力工作,不管它是什么。

    2012年6月8日 13:51
  • 是重复了,但是没有找到解决方案啊。。。

    Science and technology is my lover.

    2012年6月11日 3:33