こんにちは、助けてくれてありがとう。WCF サービスを使用して Silverlight アプリケーションを使用しています。データベースからモジュール、サーバー、サーバー グループをそれぞれ取得する GetModuleObjects()、GetServerObjects()、および GetMonitorGroupObjects() という 3 つの操作コントラクトを持つサービス コントラクトがあります。Main の Service Client インスタンスに 3 つのイベントを追加するコードがあります。最初の 2 つのイベントは正しく発生していますが、何らかの理由で 3 番目のイベントのコードに到達していません。これが問題です。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);
}
}
}
}
3 番目のイベントが発生せず、そのコードに到達しない理由がわかりません。助けてください!