上条笔记说的内存共享冲突后,可以使用锁来解决
通过锁住对象内存,只能允许同一时间只有一个线程可以访问,其他想要访问的线程排队等待
static void CallFunc(object obj) { Class1 o = obj as Class1; lock (o) { while (true) { o.Cooo(); } } }
使用lock关键字,申请o对象的内存访问,如果没有线程在访问,则锁住对象,进行里面的代码。如果对象已经被锁了,那么排队等待。