今天我需要修复一些使用线程的旧VB.NET 1.0代码。问题出在从工作线程而不是UI线程更新UI元素。花了我一些时间才发现我可以使用InvokeRequired断言来找到问题。
除了上述的并发修改问题,还有死锁、竞态条件等其他问题,人们可能会遇到。因为调试/修复线程问题很麻烦,所以我想知道如何减少这个区域的编码错误/故障,并且如何更容易地找到它们。因此,我的问题是:
- 在编写多线程代码时是否有任何好的模式可供遵循?有哪些应该做和不应该做的事情?
- 您用什么技术来调试线程问题?
如果适用和可能,请提供一些示例代码。答案应与.NET框架(任何版本)相关。