我有一个windows服务,偶尔会在引发未处理的ThreadInteruptedException时崩溃并停止。此服务的主要功能是每x分钟运行一次同步(用户定义的时间范围)。我只有一次使用Thread.Interrupt()方法两次(因为我知道它有多混乱) -Windows服务中未处理的ThreadInteruptedException
客户端可以通过TCP连接进行连接,但是如果数据发送到客户端的速度太快为了解决这个问题,它可以发送一个“暂停”信号回服务,然后在所有数据处理完毕后恢复(这可能是无线设备,可能有多个客户端以不同的速度运行,所以我没有想在TCP缓冲区中留下任何这一点)。暂停然后使线程进入休眠状态,然后继续中断并继续。
另一种用途是在TCP连接最初连接时出现类似的情况。
但是,我已经让这个服务运行,即使我没有连接任何客户端也会抛出这个异常!没有TCP连接正在建立,因此这些中断方法都没有达成!我已经把try语句放在服务中的每个Thread.Sleep()周围来捕获这个异常,但是这个异常仍在被提出!
我确定我错过了一些非常明显的事情,但它只是不跳出来,我一直在寻找几天!
- 有没有人遇到过这个 之前?
- 没有人有任何便宜 替代睡眠和 中断线程(不 而(暂停)继续;)
- 有谁知道的 调试未处理的异常 这样一个简单的方法?我什至不能看到 堆栈来找出这是从哪里来的 !
- 其他方法可以抛出ThreadInterruptedException吗?或者是否有其他方法会导致睡眠线程中断?
在此先感谢
TIE不会从天而降。通过删除Interrupt()调用并将其替换为Auto/ManualResetEvent.Set()来改进您的代码。 – 2011-04-07 11:55:25
伟大的提示汉斯,没有更多的错误!谢谢 – Connell 2011-04-14 13:10:06