WCF客户端多事件问题

时间:2010-12-01 19:36:18

标签: c# silverlight wcf events

我的问题是来自WCF客户端的事件。我将客户端对象交给某些类。在这些课程中,我创建了这些活动。如果我在不同的类中创建相同的事件,它会多次触发。我希望只有事件在我调用WCF的类中触发。

我该如何解决这个问题?仅在完成后删除每个事件?

Sry for my english;)

...谢谢

2 个答案:

答案 0 :(得分:1)

您好 我不太了解你的问题,但我会尽力回答我的做法。 当您引用WCF服务时,您知道将在客户端项目中生成代理类。此代理类共享服务器端的相同数据成员的接口,但不是行为。因此,例如,可以从客户端访问所有属性,但不能访问事件,方法等。也许你可以写下你想要完成的事情,我们可以提供帮助吗?

更新


好的,现在我想我明白了。那么这是一个解决方案,用于删除在执行AddNumber方法之前不应触发的每个事件。另一个解决方案是跟踪调用类。例如

public static ArrayList eventObjects = new ArrayList(); //Declare a global array list which will be accessible from all classes

eventObjects.Add(this); //Before calling AddNumber method
_client.AddNumber += new EventHandler<AddNumberCompletedEventArgs>(_client_AddNumberCompleted);
void _client_AddNumberCompleted(object sender, AddNumberCompletedEventArgs e)
{
     if(ar.Contains(this))
     {
         //Do what you want to do here. Other classes will receive this event too, but they will not react.
         eventObjects.Remove(this);
     }
}

但是我必须警告你,这不是最佳方法。我不能建议你一个更好的方法,因为我不知道你想要完成什么。

答案 1 :(得分:1)

好的抱歉。

我将WCF添加到客户端项目中的服务引用。 然后我从Webservice Client创建了一个实例:

private WServiceClient _client = new WService.WServiceClient();

我将这个对象交给了几个类。在这个类中,我从WCF(asyc调用)的一些Methodes创建完整的事件。像这样:

_client.AddNumber += new EventHandler<AddNumberCompletedEventArgs>(_client_AddNumberCompleted);

        void _client_AddNumberCompleted(object sender, AddNumberCompletedEventArgs e)
        {

        }

问题是我在不同的类中使用了多个方法,我创建了多个完整的事件。如果完成事件触发,则所有类中的所有事件都会触发。我希望只有事件才能在进行呼叫的班级中解雇。

我希望你理解我的描述。

更新

我在完成事件中从事件处理程序中删除事件来解决我的问题。