C# Windows服务中未处理的ThreadInteruptedException

C# Windows服务中未处理的ThreadInteruptedException,c#,windows-services,C#,Windows Services,我有一个windows服务,当抛出未处理的ThreadInterruptedException时,该服务偶尔会崩溃并停止。此服务的主要功能是每x分钟(用户定义的时间跨度)运行一次同步。我只使用了一次Thread.Interrupt()方法两次(因为我知道它有多混乱)- 客户机可以通过TCP连接进行连接,但如果数据发送到客户机的速度太快,无法处理,则可以向服务发送“暂停”信号,然后在处理完所有数据后恢复(这些可能是无线设备,可能有多个客户端以不同的速度运行,因此我不想将任何这些留在TCP缓冲区中)

我有一个windows服务,当抛出未处理的ThreadInterruptedException时,该服务偶尔会崩溃并停止。此服务的主要功能是每x分钟(用户定义的时间跨度)运行一次同步。我只使用了一次Thread.Interrupt()方法两次(因为我知道它有多混乱)-

客户机可以通过TCP连接进行连接,但如果数据发送到客户机的速度太快,无法处理,则可以向服务发送“暂停”信号,然后在处理完所有数据后恢复(这些可能是无线设备,可能有多个客户端以不同的速度运行,因此我不想将任何这些留在TCP缓冲区中)。暂停然后使线程进入睡眠状态,恢复中断并继续

当TCP连接最初正在连接时,另一个用途与此类似

但是,我让此服务运行,即使我没有连接任何客户端,也会引发此异常!没有建立TCP连接,因此无法访问这些中断方法!我在服务中的每个线程.Sleep()周围都放置了try语句来捕获此异常,但仍会引发此异常

我肯定我错过了一些非常明显的东西,但它并没有冲着我跳,我已经找了好几天了

  • 有人遇到过这种情况吗 以前
  • 有便宜货吗 睡眠和睡眠的替代品 中断线程(不是 (暂停)继续;)
  • 有人知道一种简单的方法吗 调试未处理的异常 像这样?我甚至看不到 堆叠以找出这是在哪里 来自
  • 其他方法是否可以抛出ThreadInterruptedException?或者其他方法是否可以导致睡眠线程中断

  • 提前感谢

    我看不到从甚至没有调用的方法中引发异常

    另外,
    threadinterruptedexception
    不是由
    Sleep
    方法引起的,而是由
    interrupt
    方法引起的,因此
    try/catch
    on
    Sleep
    在这里似乎不相关

    发件人:

    您可以通过以下方式中断正在等待的线程: 正在调用线程。在 阻止线程抛出 ThreadInterruptedException,其中 将线从挡块上断开 调用。线程应该捕获 ThreadInterruptedException和do 只要是适合继续下去的 正在工作。如果线程忽略 异常时,运行时捕获 异常并停止线程


    对于任何阅读本文的人。我接受的答案是Hans Passant的评论。这个解决方案同样有效,并且消除了任何ThreadInterruptedException


    平局不会从天而降。通过删除Interrupt()调用并将其替换为Auto/ManualResetEvent.Set()来改进代码


    我不确定这里应该使用什么术语,但我想调用myThread。来自另一个线程的中断会导致线程抛出ThreadInterruptedException。myThread上的Sleep方法。这似乎是有道理的,但我是否完全误解了整个概念?这不是天方夜谭。通过删除e Interrupt()调用并将其替换为Auto/ManualResetEvent.Set()。很好的提示,Hans,没有更多错误!谢谢