나는 해결책을 발견,하지만 난 그것이 얼마나 좋은 완전히 확실하지 않다. 먼저 내가
인터페이스 선언을 이벤트에 "구독"하는 데 사용됩니다 WCF의 방법을 만들어
[OperationContract]
[WebInvoke(Method = "GET",
BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "Notification")]
Stream Notification();
내가 post_event가 발생할 때까지 서비스 인스턴스를 동결 AutoResetEvent를 사용하고
public Stream Notification()
{
string result= "";
using (FbConnection conn= new FbConnection(ConfigurationManager.ConnectionStrings["DB"].ConnectionString))
{
conn.Open();
FbRemoteEvent events= new FbRemoteEvent(conn, "event1", "event2", "event3", "event4");
events.QueueEvents();
AutoResetEvent waitHandle = new AutoResetEvent(false);
eventi.RemoteEventCounts += (sender, args) =>
{
if (args.Counts > 0)
{
result= args.Name;
waitHandle.Set();
}
};
waitHandle.WaitOne();
}
return new MemoryStream(Encoding.UTF8.GetBytes(result));
}
서비스 클래스 구현 일단 AutoResetEvent의 Set() 메서드가 호출되어 서비스의 고정을 해제하고 내 사건 이름을 반환하면 어떤 이벤트가 발생했는지 알 수 있습니다. 클라이언트 측에서 별도의 스레드에서이 메서드를 호출하고 해당 응답을 기다리는 즉시 해당 메서드를 다시 처리하고 동일한 메서드 요청을 다시 보내서 다음 post_event를 catch 할 수 있습니다.
P. 이 작업을 수행하려면 InstanceContextMode를 PerCall로 설정해야합니다.
SingalR의 클라이언트가 Windows .net CE에서 지원되지 않기 때문에 이것은 나에게 도움이되지 않습니다. 앞으로의 프로젝트에도 유용한 제안이긴하지만. – Aleksandar