我有一个第三方应用程序,我通过他们正在公开的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中工作得很好。任何建议将不胜感激。
所以我从我的控件的公共构造函数中调用这个方法,这是失败的。例如,如果我在按钮单击处理程序中移动此确切代码,它将返回我期望的数据。我猜我的程序正在初始化并在他们的服务挂钩之前点击该调用?有没有办法等待这种情况发生?
答案 0 :(得分:0)
当我从构造函数中删除它并将其放在按钮单击处理程序中时,看到上面的代码工作后,我意识到问题可能是我试图在服务挂钩之前访问数据。通过将代码置于我的控件Load
事件中,我能够获取所需的数据。