“CLR错误:80004005,程序将立即停止”的一种解决方法

“CLR错误:80004005,程序将立即停止”的一种解决方法

在使用Visual Studio 2019的时候,想打开软件但是会提示“CLR错误:80004005,程序将立即停止”,如下图:

在这里插入图片描述
当时我就懵了,以前没有碰到过这种问题,然后在网上找解决方法,结果找了好久,最多的答案就是下面两种,我尝试了他们的方法:例如
1)卸载更新.net framework
2)win+R或命令行执行regsvr32 Softpub.dll、regsvr32 Wintrust.dll、regsvr32 Initpki.dll这三条命令
在尝试第二种方法的时候,前面两个还行,到了第三个就提示错误?然后我又往前面找解决方法,比如换一个Initpki.dll或者把这个文件放到C:\Windows\SysWOW64文件夹下、往powershell里面设置,结果powershell都打不开。我顿时疯了,搞了一两天一点进展都没有。看着帖子的操作方法很简单,但是实际却不如人意,毕竟每个人的电脑都不尽相同,方法只能作为参考。

在想了好久之后,会不会是系统的问题,因为我之前还是能打开的,然后我就用360检查电脑,结果得出下面的结果(我复制的系统漏洞信息),提示有一个高危漏洞,系统环境变量被更改。在恢复为默认之后,就没出现了这个错误。

在这里插入图片描述可能是我之前安装的一个不正规的软件更改了这个设置,所以使用其它方法之前,建议先检查以下电脑本身是不是存在什么问题或者更改了什么系统设置,以上内容仅供参考!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是使用双缓冲技术来优化界面的示例代码: ```c++ using namespace System::Drawing; // 在PictureBox的Paint事件中实现绘制缓存 private: System::Void pictureBox1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { // 创建缓存位图 Bitmap^ buffer = gcnew Bitmap(pictureBox1->Width, pictureBox1->Height); Graphics^ g = Graphics::FromImage(buffer); // 在缓存位图上绘制多个PictureBox for each (PictureBox^ pic in pictureBoxes) { g->DrawImage(pic->Image, pic->Location); } // 将缓存绘制到PictureBox上 e->Graphics->DrawImage(buffer, Point::Empty); } // 在PictureBox的SizeChanged事件中触发重绘 private: System::Void pictureBox1_SizeChanged(System::Object^ sender, System::EventArgs^ e) { pictureBox1->Invalidate(); } ``` 在上面的代码中,我们首先在PictureBox的Paint事件中创建了一个缓存位图,并在该位图上绘制了所有的PictureBox。然后将缓存位图绘制到PictureBox上。在PictureBox的SizeChanged事件中,我们触发了重绘操作,从而将缓存位图更新为最新的大小。 另外,还可以通过使用双缓冲技术来优化界面的渲染效率,这里提供一段使用双缓冲技术的示例代码: ```c++ private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { // 启用双缓冲技术 this->SetStyle(ControlStyles::DoubleBuffer | ControlStyles::AllPaintingInWmPaint | ControlStyles::UserPaint, true); this->UpdateStyles(); } // 在PictureBox的Paint事件中实现双缓冲绘制 private: System::Void pictureBox1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { // 创建缓存位图 Bitmap^ buffer = gcnew Bitmap(pictureBox1->Width, pictureBox1->Height); Graphics^ g = Graphics::FromImage(buffer); // 在缓存位图上绘制多个PictureBox for each (PictureBox^ pic in pictureBoxes) { g->DrawImage(pic->Image, pic->Location); } // 将缓存绘制到屏幕上 e->Graphics->DrawImage(buffer, Point::Empty); } ``` 在上面的代码中,我们在Form的Load事件中启用了双缓冲技术,从而将界面的绘制缓存到内存中。在PictureBox的Paint事件中,我们创建了一个缓存位图,并在该位图上绘制了所有的PictureBox。然后将缓存位图绘制到屏幕上,从而实现了双缓冲绘制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值