我有一个需要与库通信的.NET多线程环境。该库有一些限制,因此无法在多线程环境中正常工作。我需要一种方法来解决这个问题,使多线程环境与中间层进行通信,然后调用库。我提出了解决问题的解决方案,但我不相信这是最好的解决方案。我创建了一个具有运行方法的异步线程。 run方法处于无限循环中,它检查当前任务(我设置的参数)是什么,并执行相应的方法。同步多个线程
正如我所说,我对这个解决方案根本不信服,但它正确地完成了这项工作。所以请告诉我是否有更好的解决方案(尤其是与C#相关的)。
正如旁注所示,限制不是由于多个线程同时工作并导致数据损坏。我需要完全相同的线程来执行所有操作(取决于线程ID)。
你的方法听起来不错。带有无限循环的线程在没有待处理任务时应该睡眠。你的实现是否这样做?如果没有,发布一些代码,以便我们可以帮助你。 – dtb
您可能需要使用[BlockingCollection](http://msdn.microsoft.com/en-us/library/dd267312.aspx)包装一[ConcurrentQueue ](http://msdn.microsoft.com /en-us/library/dd267265.aspx)。 –
dtb
您也可以实现一个自定义的[TaskScheduler](http://msdn.microsoft.com/zh-cn/library/system.threading.tasks.taskscheduler.aspx),它可以调度同一线程上的所有任务。 – dtb