我正在编写一个 C# 类来包装一个简单的 Web 服务。RESTful 的东西很容易总结,但现在我需要在服务器上的某些东西发生变化时引发一个事件。
我已经设置了服务器以使事件流可用,但我不知道如何在 C# 中获取流。
目前我正在做这样的事情:
public class ServiceWrapper
{
private readonly wc = new WebClient();
public ServiceWrapper()
{
wc.OpenReadAsync(new Uri(UriOfEvent));
wc.OpenReadCompleted += ServerEventOccurs;
}
private void ServerEventOccurs(object sender, OpenReadCompletedEventArgs args)
{
using (var sr = new StreamReader(args.Result))
{
var message = ParseStream(sr);
RaiseServerEventOccurred(message);
}
wc.OpenReadAsync(new Uri(UriOfEvent));
}
//usual code for declaring and raising ServerEventOccurred event
}
在我的测试中,该事件被拾取一次,但不是两次。服务器上的事件本质上是一个开关——有些事情发生了,它继续,其他事情发生了,它熄灭了。我知道切换是有效的,因为我已经将事件流连接到一个普通的网页来测试它。
我应该如何处理 C# 中的事件流?
编辑 1:我已经更新了代码以修复 TimVK 指出的错误,但事件流仍然没有被第二次拾取。