我需要在我的客户端应用程序中托管一项服务,以将数据暴露给也嵌入在我的客户端中的 OEM 软件。
有哪些线程选项可用?目前我使用以下类似的东西:
var host = new ServiceHost(...);
var serviceThread = new System.Threading.Thread(host.Open);
serviceThread.Start();
我遇到的问题是在我调用 serviceThread.Start() 之后我想检查服务是否正在运行,但是服务需要不同的时间来启动或失败。
使用 Thread.Sleep(x) 似乎不正确。有哪些替代方案?
谢谢。
[编辑]
在尝试了 maralfol 建议后,我得到了一些奇怪的行为,我的主线程被劫持,直到服务超时。
代码:
host = new ServiceHost(typeof(XmlCacheService), new Uri(baseAddress));
host.AddServiceEndpoint(typeof(IXmlDataService), new WebHttpBinding(), string.Empty)
.Behaviors.Add(new WebHttpBehavior());
try { xmlServiceHost.Open(); }
catch (AddressAccessDeniedException)
{
CreateRegisterDashboardServiceFile();
this.ShowUserInfoMessage("The dashboard service needs to be registered. Please contact support.");
}
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerCall)]
public class XmlCacheService : IXmlDataService
{
}
[ServiceContract]
public interface IXmlDataService
{
[WebInvoke(Method = "POST")]
Stream GetXmlData(Stream messageBody);
}