我有一系列对象都是从一个线程填充的。大部分流控制在所述生产者线程中执行。在一两个地方,我从其他线程中读取数据。是否存在可用于断言创建线程是唯一一个调用某个方法的诊断工具,属性等,以便我可以在测试期间捕获编程错误?我想避免复杂的类封装来解决这个问题。
public class Datastore
{
public Register( int id )
{
// must be called on producer thread - want to avoid locking 'just in case'. It is an invalid operation to be called from another thread.
}
public int GetTotal()
{
// can be called on any thread
}
// ... more class members, etc.
}
以上仅用于说明目的。
是否有属性或某种模式可以这样工作:
public class Datastore
{
[AssertOnProducerThread]
public Register( int id )
{
}
public int GetTotal()
{
}
// ... more class members, etc.
}
答案 0 :(得分:1)
我不知道可以自动执行的诊断工具。你唯一能做的就是可以在这些函数中遇到断点时显示线程id的visual studio调试器。最好是对它进行编码,而不是通过保存threadid并将其与函数进行比较来手动检查它,如果为false则将其中断。或者,将threadid从函数记录到文件并后处理日志文件。