![](/img/trans.png)
[英]C# - Hiding all methods of the UserControl class from a derived one
[英]Making all methods from a class to run on the same thread in c#
我想创建具有自己的线程的 singleton,并执行每个方法(假设这是数据库,并且每个添加/修改操作都需要从同一个线程调用),该线程可以在构造函数中创建,我也想要那个singleton 中的每个方法都将在这个特定线程上执行。
据我了解,新的 System.Threading.Thread.Thread() 使我能够启动线程,但启动后,我无法自由地对它进行下一个工作。 如何将新工作排队到该线程? 这应该像 myThread.Queue(()=> doWork()); 但我没有看到这样的 api。
下面的简化代码显示了如何做到这一点。 TryTake 将无限期地阻塞(或 unitl collection.CompleteAdding()
被调用,尽管有接受超时值的重载。
var collection = new BlockingCollection<Action>();
new Thread(() =>
{
while (collection.TryTake(out Action a, -1))
{
a.Invoke();
}
}
}).Start();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.