Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Silverlight的WCF服务中的EventHandler:从未触发系列中的第三个事件_C#_.net_Wcf_Silverlight_Silverlight 5.0 - Fatal编程技术网

C# 使用Silverlight的WCF服务中的EventHandler:从未触发系列中的第三个事件

C# 使用Silverlight的WCF服务中的EventHandler:从未触发系列中的第三个事件,c#,.net,wcf,silverlight,silverlight-5.0,C#,.net,Wcf,Silverlight,Silverlight 5.0,您好,提前感谢您的帮助。我正在使用一个使用WCF服务的silverlight应用程序。我有一个包含三个操作契约的服务契约:getModuleObject()、GetServerObjects()和GetMonitorGroupObjects(),它们分别从数据库检索模块、服务器和服务器组。我有一段代码,它在Main中向服务客户机实例添加了三个事件。前两个事件正确触发,但由于某些原因,无法访问第三个事件中的代码,这是一个问题。我在Main.xaml.cs中的代码如下: using System;

您好,提前感谢您的帮助。我正在使用一个使用WCF服务的silverlight应用程序。我有一个包含三个操作契约的服务契约:getModuleObject()、GetServerObjects()和GetMonitorGroupObjects(),它们分别从数据库检索模块、服务器和服务器组。我有一段代码,它在Main中向服务客户机实例添加了三个事件。前两个事件正确触发,但由于某些原因,无法访问第三个事件中的代码,这是一个问题。我在Main.xaml.cs中的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using SilverlightTreeviewTest.ServiceReference1;
using System.Collections.ObjectModel;

namespace SilverlightTreeviewTest
{
    public partial class MainPage : UserControl
    {
        static public ObservableCollection<ModuleObject> TableModuleObjects = new ObservableCollection<ModuleObject>();
        static public ObservableCollection<ServerObject> TableServerObjects = new ObservableCollection<ServerObject>();
        static public ObservableCollection<ServerGroupOCollection> TableMonitorGroupObjects = new ObservableCollection<ServerGroupOCollection>();

        public MainPage()
        {

            InitializeComponent();
            Service1Client MyWebService = new Service1Client();


            MyWebService.GetModuleObjectsCompleted += new EventHandler<GetModuleObjectsCompletedEventArgs>(MyWebService_GetModuleObjectsCompleted);
            MyWebService.GetModuleObjectsAsync();
        }

        void MyWebService_GetModuleObjectsCompleted(object sender, GetModuleObjectsCompletedEventArgs e)
        {
            dataGrid1.ItemsSource = e.Result;
            foreach (DataTest_ModuleObject item in e.Result)
            {
                ModuleObject module = new ModuleObject((string)item.ModuleName,(int)item.ModuleStatus,(int)item.ServerID,(int)item.ID);
                TableModuleObjects.Add(module);
            }

            Service1Client WebServiceForServers = new Service1Client();
            WebServiceForServers.GetServerObjectsCompleted += new EventHandler<GetServerObjectsCompletedEventArgs>(WebServiceForServers_GetServerObjectsCompleted);
            WebServiceForServers.GetServerObjectsAsync();
        }

        void WebServiceForServers_GetServerObjectsCompleted(object sender, GetServerObjectsCompletedEventArgs e)
        {
            //get each server entry from table and create ServerObject for each
            //find the modules from the module collection then add server to server collection
            foreach (DataTest_ServerObject item in e.Result)
            {
                ServerObject server = new ServerObject((string)item.ServerName,(int)item.ID,(int)item.Group_Id);
                server.FindModules(TableModuleObjects);
                TableServerObjects.Add(server);

            }

            //fire event to retrieve Monitor groups from db and assign servers to them
            Service1Client WebServiceForGroups = new Service1Client();
            WebServiceForGroups.GetMonitorGroupObjectsCompleted += new EventHandler<GetMonitorGroupObjectsCompletedEventArgs>(WebServiceForGroups_GetMonitorGroupObjectsCompleted);
            WebServiceForGroups.GetServerObjectsAsync();
        }

        void WebServiceForGroups_GetMonitorGroupObjectsCompleted(object sender, GetMonitorGroupObjectsCompletedEventArgs e)
        {
            //get each MonitorGroup entry from table and create MonitorGroupObject(ServerGroupOCollection) for each
            //find associated servers and then add the group to the collection of groups
            foreach (DataTest_MonitorGroupObject item in e.Result)
            {
                ServerGroupOCollection mGroup = new ServerGroupOCollection((string)item.MonitorGroup_Name, (int)item.ID, (int)item.MonitorGroup_Type);
                mGroup.FindServers(TableServerObjects);
                TableMonitorGroupObjects.Add(mGroup);
            }
        }

    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
Net系统;
使用System.Windows;
使用System.Windows.Controls;
使用System.Windows.Documents;
使用System.Windows.Input;
使用System.Windows.Media;
使用System.Windows.Media.Animation;
使用System.Windows.Shapes;
使用SilverlightTreeviewTest.ServiceReference1;
使用System.Collections.ObjectModel;
名称空间SilverlightTreeviewTest
{
公共部分类主页面:UserControl
{
静态公共ObservableCollection TableModuleObjects=新的ObservableCollection();
静态public observeCollection TableServerObjects=新的observeCollection();
静态公共ObservableCollection TableMonitorGroupObjects=new ObservableCollection();
公共主页()
{
初始化组件();
Service1Client MyWebService=新Service1Client();
MyWebService.GetModuleObjectsCompleted+=新事件处理程序(MyWebService\u GetModuleObjectsCompleted);
MyWebService.GetModuleObjectsAsync();
}
void MyWebService_GetModuleObjectsCompleted(对象发送方,GetModuleObjectsCompletedEventArgs e)
{
dataGrid1.ItemsSource=e.结果;
foreach(e.Result中的DataTest_模块对象项)
{
ModuleObject模块=新的ModuleObject((字符串)item.ModuleName,(int)item.ModuleStatus,(int)item.ServerID,(int)item.ID);
TableModuleObjects.Add(模块);
}
Service1Client WebServiceForServers=新的Service1Client();
WebServiceForServers.GetServerObjectsCompleted+=新事件处理程序(WebServiceForServers\u GetServerObjectsCompleted);
WebServiceForServer.GetServerObjectsAsync();
}
void WebServiceForServer\u GetServerObjectsCompleted(对象发送方,GetServerObjectsCompletedEventArgs e)
{
//从表中获取每个服务器条目,并为每个条目创建ServerObject
//从模块集合中查找模块,然后将服务器添加到服务器集合
foreach(e.Result中的DataTest\u服务器对象项)
{
serverobjectserver=newserverobject((string)item.ServerName,(int)item.ID,(int)item.Group\u ID);
FindModules(TableModuleObject);
TableServerObjects.Add(服务器);
}
//激发事件以从数据库检索监控器组并为其分配服务器
Service1Client WebServiceForGroups=新Service1Client();
WebServiceForGroups.GetMonitorGroupObjectsCompleted+=新事件处理程序(WebServiceForGroups\u GetMonitorGroupObjectsCompleted);
WebServiceForGroups.GetServerObjectsAsync();
}
void WebServiceForGroups\u GetMonitorGroupObjectsCompleted(对象发送者,GetMonitorGroupObjectsCompletedEventArgs e)
{
//从表中获取每个MonitorGroup条目,并为每个条目创建MonitorGroupObject(ServerGroupCollection)
//查找关联的服务器,然后将组添加到组集合中
foreach(e.Result中的DataTest_MonitorGroupObject项)
{
ServerGroupOCollection mGroup=新的ServerGroupOCollection((字符串)item.MonitorGroup\u Name,(int)item.ID,(int)item.MonitorGroup\u Type);
mGroup.findserver(表服务器对象);
TableMonitorGroupObjects.Add(mGroup);
}
}
}
}

我不明白为什么第三个事件从未被触发,它的代码从未到达。请帮忙

在WebServiceForServer\u GetServerObjectsCompleted中,您正在注册GetMonitorGroupObjectsCompleted的事件处理程序,但随后调用GetServerObjectsAsync方法


当然,您的意思是调用GetMonitorGroupObjectsAsync(或类似功能)。

在WebServiceForServers\u GetServerObjectsCompleted中,您正在注册GetMonitorGroupObjectsCompleted的事件处理程序,但随后调用GetServerObjectsAsync方法


当然,您的意思是调用GetMonitorGroupObjectsAsync(或类似功能)。

您完全正确。大约30分钟前,我看到这个打字错误(我想是intellisense挑出的,我不假思索地按了回车键),感觉自己像个十足的傻瓜。更改它可以消除问题。很好的发现,你完全正确。大约30分钟前,我看到这个打字错误(我想是intellisense挑出的,我不假思索地按了回车键),感觉自己像个十足的傻瓜。更改它可以消除问题。不过这是个好发现。