C#中断流反序列化

时间:2017-07-20 20:01:13

标签: c# multithreading serialization deserialization

我有一个运行的线程,它持续监听消息流(类型为Message及其子类型)并将它们排序到相应的bin中(例如Response类型的消息进入一个bin,{ {1}}类型消息进入另一个等等,所以其他线程可以检查和/或检索他们感兴趣的bin中的消息。问题是我不知道如何中断它。由于某种原因,Info线程不会导致Interrupt()在其运行循环中抛出。即使ThreadInterruptedException流也不会阻止它等待,这很奇怪。

线程的运行循环类似于以下内容:

Dispose()

其中protected virtual void Run() { try { while (true) { Message m = Receive(); MessageBins[GetMessageType(m)].TryAdd(m); } } catch (ThreadInterruptedException) { Console.Error.WriteLine("Interrupted!"); // DEBUG, never reaches here, even when interrupted } catch (SerializationException e) { // ... } catch (Exception e) { // ... } } 看起来像

Receive()

如何打断这个?

0 个答案:

没有答案