我的问题是来自WCF客户端的事件。我将客户端对象交给某些类。在这些课程中,我创建了这些活动。如果我在不同的类中创建相同的事件,它会多次触发。我希望只有事件在我调用WCF的类中触发。
我该如何解决这个问题?仅在完成后删除每个事件?
Sry for my english;)
...谢谢
答案 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)
{
}
问题是我在不同的类中使用了多个方法,我创建了多个完整的事件。如果完成事件触发,则所有类中的所有事件都会触发。我希望只有事件才能在进行呼叫的班级中解雇。
我希望你理解我的描述。
更新
我在完成事件中从事件处理程序中删除事件来解决我的问题。