簡體   English   中英

使用Silverlight的WCF服務中的EventHandler:系列中的第三個事件永遠不會觸發

[英]EventHandler in WCF service with Silverlight: third event in series never being fired

您好,謝謝您的幫助。 我正在使用WCF服務使用Silverlight應用程序。 我有一個包含三個操作合同的服務合同:GetModuleObjects(),GetServerObjects()和GetMonitorGroupObjects(),它們分別從數據庫中檢索模塊,服務器和服務器組。 我有將三個事件添加到Main中的Service Client實例的代碼。 前兩個事件正確觸發,但是由於某種原因,第三個事件中的代碼始終未到達,這是一個問題。 我在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);
            }
        }

    }
}

我不明白為什么第三事件從未被觸發並且其代碼從未到達。 請幫忙!

在WebServiceForServers_GetServerObjectsCompleted中,您正在為GetMonitorGroupObjectsCompleted注冊一個EventHandler,然后調用GetServerObjectsAsync方法。

當然,您的意思是調用GetMonitorGroupObjectsAsync(或類似方法)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM