从自己的类构造函数启动WCF
本文关键字:启动 WCF 构造函数 自己的 | 更新日期: 2023-09-27 18:08:48
我有一个自托管的命名管道(不使用http) wcf托管在类库中。我能够通过在类库中使用以下方法启动WCF:
ServiceHost serviceHost;
public void startService()
{
// Create the service host
...
// Open Service Host
serviceHost.Open();
}
然后从一个winforms测试程序中运行以下命令,从一个按钮点击:
MyClassLib.MySvc testSvc;
private void button2_Click(object sender, EventArgs e)
{
testSvc = new MyClassLib.MySvc();
testSvc.startService();
}
这将正确启动WCF在类库中运行。
但是这需要引用类库的winforms调用startService方法。
我想要的只是能够在对运行WCF的类库的引用完成后立即启动服务。
我试图在类库服务的构造函数中添加以下内容:public MySvc()
{
startService();
}
然后从winforms实例化:
MyClassLib.MySvc testSvc;
private void button2_Click(object sender, EventArgs e)
{
testSvc = new MyClassLib.MySvc();
//testSvc.startService(); //No need to call this
}
如果我调试代码,我可以看到它实际上在这一点上中断了:
public MySvc()
{
startService(); // It does run this but service does not start
}
但是这不会运行服务。如有任何帮助,不胜感激。
注释#1:我相信这是某种类型的定时问题,它不允许您在构造函数方法期间启动服务,但不确定。
问题解决了,是的,我假设这是一个时间问题(见上面的注释# 1)是正确的!
复制,修改如下:
public MySvc()
{
startService(); // It does run this but service does not start
}
这个问题解决了:
public void delayStartService()
{
Task.Delay(1000).ContinueWith(t => startService());
}
public MySvc()
{
delayStartService();
}