C#断言正确的线程访问对象
本文关键字:线程 访问 对象 断言 | 更新日期: 2023-09-27 18:19:37
我有一系列对象,它们都是从一个线程填充的。流量控制的大部分是在所述生产者线程中执行的。在一两个地方,我从其他线程中读取数据。是否有现有的诊断工具、属性等可以用来断言创建线程是唯一一个调用某些方法的线程,以便在测试期间捕捉编程错误?我希望避免复杂的类封装来解决这个问题。
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.
}
我不知道有什么诊断工具可以自动完成。你唯一能做的就是visual studio调试器,当你在这些函数中遇到断点时,它会显示线程id。最好对其进行编码,而不是手动检查,方法是保存threadid并将其与函数进行比较,如果为false则中断。或者,将函数中的线程ID记录到文件中,然后对日志文件进行后处理。
获取线程ID