今天遇到了一个情况:
1.UI线程中开了一个子线程
2.有又两个锁代码块(一个锁,锁了两个代码块A,B),B是在子线程中的,B中有代码块B(a)用Invoke调用了UI线程的函数
3.当子线程正在B中执行并还没有执行到B(a)的时候,UI线程正好调用了A,这时候UI线程只能等待B释放锁
4.然后B执行到了B(a),B(a)调用UI线程,因为UI线程正在等待B释放锁,所以B(a)只好等待
5.这样就导致了两个线程相互等待,死锁
反思:其实B(a)当时根本不用放在锁中,所以处理线程的时候一定要尽量简洁清楚