C# 开发Windows服务 中使用委托

本文介绍了一个在Windows服务程序中遇到的回调函数无法执行的问题及解决方案。作者在开发过程中遇到了服务程序无法执行远程方法调用的回调函数的情况,在排查过程中发现本地端口监听正常且订阅操作也未发现问题。最终确定问题是由于Windows防火墙阻止了回调通信,关闭防火墙后问题得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

ExpandedBlockStart.gif代码
        private Thread workerThread = null;
        
private Subscriber sub;

        
public DataReceiveService()
        {
            InitializeComponent();
            CanShutdown 
= true;
            CanStop 
= true;
            sub 
= new Subscriber();
        }

        
protected override void OnStart(string[] args)
        {
            EventLog.WriteEntry(
"Start Server: " + DateTime.Now.ToString());
            workerThread 
= new Thread(new ThreadStart(ServiceWorkerMethod));
            workerThread.Start();
        }

        
protected override void OnStop()
        {
            ReciveDataStatus.StopReviceDate 
= true;
        }

        
public void ServiceWorkerMethod()
        {
            sub.StartSubscriber();
        }


说明:

其中,sub.StartSubscriber() 中是向ICE Storm 的订阅,需要创建委托并向ICE storm server 进行订阅,
同时本地会监听一个端听,用于实现回调

症状:
目前所遇到的问题是: 无法执行回调函数
同时发现本机的监听端听已经在侦听了,        而且  sub.StartSubscriber(); 也执行正常,

通过测试 发现如果在windows form 项目里 回调是没问题的

疑问:是否是windows 服务程序 与 远程方法调用或回调相冲突?


本来就没有开发过WINDOWS 服务程序,所以

困扰了近两个星期,  也没找到解决方法


重新创项目还是不行

不得己写小服务程序调试,不行!

突然想换台机器试试,到同事的电脑上跑?可以了,郁闷

回头一看,windows防火墙在开着,立马关上,可以了,晕,郁闷ing!

 

转载于:https://www.cnblogs.com/xnli1983/archive/2009/12/16/1625857.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值