c#发展

首页 » 常识 » 诊断 » u0001Cu0001u0001S
TUhjnbcbe - 2025/5/7 17:05:00

使用C#实现一个需求:调用这个窗体时不需要点击关闭窗体就能实时更新数据,并且不会卡住主线程,以下是可能遇到的问题和调整思路。

第一步打开窗体显示数据

第二步保证这个窗体只有一个单例,如果要更新显示的话就把已经打开的窗体给关掉

此时发现没有传参,进行修改

参数好了,此时发现如果关掉了再打开就会提示无法访问已释放的对象,如果不关掉就无法更新显示的内容,进行修改

现在的代码可以完美实现我的需求,但是

不是真正的单例:每次调用GetInstance都会创建一个新的FrmShowAtt实例,因为在创建新实例之前总是将_instance设置为null。

不必要的关闭和释放:如果只是想更新窗体的数据,那么关闭并释放旧实例是不必要的,这会导致资源浪费。

线程安全但逻辑有误:虽然使用了锁来确保线程安全,但逻辑上存在问题,因为总是创建新实例。

修改以后如下:

接下来让AI给这段代码进行评价

单例属于C#高级编程,和多线程一样,上课只学理论,真正用起来是需要仔细摸索的,卡殿写在这里希望可以帮到你,就像帮助曾经的自己一样。这是第一篇关于技术的文章,如此有需要的其他教程欢迎评论区留言。

1
查看完整版本: u0001Cu0001u0001S