订阅 WCF 服务提供的事件

Subscribing to an event provided by a WCF service

我有一个第三方应用程序,我通过他们公开的 WCF 服务与之交互。当我的应用程序加载时,WCF 服务应该挂钩到我定义的回调中并将数据返回给我。这在 VB 中很简单,但我认为我的问题是在 C# 中完成此操作的语法。

他们的文档说明如下:Your user control will need to define an internal event with a signature that matches the event that our service is listening for.

这是我对处理程序的声明,由该服务的文档提供:

public delegate void MyDel(ref string Param1, ref string Param2);
public event MyDel GetInfo;

文档然后说我应该能够按以下方式调用此事件,我需要的服务数据将在我通过引用传递的 output 变量中:

string output = "";
string methodName = "SpecificAction"

// this is null and throws an exception
// i've tried wrapping it in an if != null block to no avail
GetInfo(ref methodName, ref output);
Console.WriteLine(output.ToString());

在 VB 中,以下工作没有问题:

Public Event GetInfo (ByRef EventName As String, ByRef XmlString As String)
Dim Output As String = ""
RaiseEvent GetInfo("SpecificAction", Output)

我认为我的 C# 语法有问题的原因是,正如我所说,它似乎在 VB 中工作得很好。如有任何建议,我们将不胜感激。

更新

所以我从我的控件的 public 构造函数中调用此方法,但它失败了。例如,如果我将这个确切的代码移到按钮单击处理程序中,它会返回我期望的数据。我猜我的程序正在初始化并在他们的服务挂钩之前打那个电话?有没有办法等待它发生?

当我将上面的代码从我的构造函数中删除并将其放在按钮单击处理程序中时,看到上面的代码可以正常工作后,我意识到问题可能是我试图在服务连接到数据之前访问数据.通过将代码放在我的控件 Load 事件中,我能够取回我需要的数据。