我在我的机器上创建了Windows服务,并创建并托管了另一个WCF服务。我想知道如何使用Signalr来传达WCF服务和Windows服务。问题是我不知道如何将WCF和Windows服务结合在一起以使连接紧密。
另一方面,如果我的WCF服务有一些数据,我想立即将该数据传递给Windows服务。
以下是我在Windows服务中的代码段。
命名空间POCWindowsService { public partial class TestService:ServiceBase { System.Timers.Timer timeDelay; int count;
public TestService()
{
InitializeComponent();
timeDelay = new System.Timers.Timer();
timeDelay.Elapsed += new System.Timers.ElapsedEventHandler(WorkProcess);
}
public void WorkProcess(object sender, System.Timers.ElapsedEventArgs e)
{
string process = "Timer Tick" + count;
LogService(process);
}
protected override void OnStart(string[] args)
{
LogService("POC Service Started");
timeDelay.Enabled = true;
}
private void LogService(string content)
{
FileStream fs = new FileStream(@"F:\Test\TestServiceLog.txt", FileMode.OpenOrCreate);
var sw = new StreamWriter(fs);
sw.BaseStream.Seek(0, SeekOrigin.End);
sw.WriteLine(content);
sw.Flush();
sw.Close();
}
protected override void OnStop()
{
LogService("POC Service Stopped");
timeDelay.Enabled = false;
}
}
}
我的WCF服务在http://localhost:8080/上运行,我的Windows服务名称为POCWindowsService。
我想知道如何使用Signalr连接这两项服务。
由于
答案 0 :(得分:0)
我不认为它的WCF相关问题。您只需将信号R库添加到您的服务然后调用它。也许是这样的:
private async void ConnectAsync()
{
Connection = new HubConnection("http://localhost:8080");
HubProxy = Connection.CreateHubProxy("YourHub");
//Handle incoming event from server: use Invoke to write to console from SignalR's thread
HubProxy.On<string, string>("YourMethod", (params1, params2) => Invoke((Action)(() => LogService(String.Format("{0}: {1}" + Environment.NewLine, params1, params2)))));
await Connection.Start();
}