如何解决win10系统频繁通知重复消息导致死循环的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决win10系统频繁通知重复消息导致死循环的问题相关的知识,希望对你有一定的参考价值。

参考技术A

Win10系统频繁通知重复消息导致死循环的解决方法:
发现该问题是由于KB3135173所致。由此可知,微软对于默认应用的重置机制存在Bug。由于各位用户的系统情况各有不同,因此导致该问题的第三方程序也不同。出现问题时的“痉挛”是由于Win10在重置默认应用时出现了不顺利,而导致进入死循环“停不下来”。
出现类似问题的用户可先卸载KB3135173,或者导致该问题的最近安装的累积更新(针对还没有安装KB3135173的用户),“闪屏痉挛”问题解决后,可“安静地”卸载相关第三方应用,然后尝试再次安装该更新补丁,如果没问题可继续安装临时卸载的第三方应用。
以上就是汇总的关于Win10系统会频繁通知重复消息的解决方法。

C++——while循环误输入非数字(如字母,标点)导致死循环的解决方法

1 问题描述

要求输入一个正整数,并判断是否成功输入一个正整数,若成功输入,则程序结束;若输入的不是一个正整数,则提示用户输入错误,并要求用户重新输入一个正整数。直到用户成功输入一个正整数,程序结束。

当用户误输入一个非数字,可能会造成程序的死循环

2 出现死循环的原因

示例1( 错误❌

#include <iostream>

using namespace std;

int main()
{
	int a;
	cout << "请输入一个正整数:" << endl;
	
	while (true)
	{
		cin >> a;

		if (a > 0)
		{
			cout << "成功输入一个正整数!" << endl;
			break;
		}
		else
		{
			cout << "输入错误,请重新请输入一个正整数:\\a" << endl;
		}
	}

	return 0;
}

示例1的结果有三种情况:

  1. 成功输入一个正整数
请输入一个正整数:
1
成功输入一个正整数!
  1. 输入了一个非正数
请输入一个正整数:
-1
输入错误,请重新请输入一个正整数:
1
成功输入一个正整数
  1. 误输入一个非数字,如字母,程序进入死循环!
请输入一个正整数:
aa
输入错误,请重新请输入一个正整数:
输入错误,请重新请输入一个正整数:
输入错误,请重新请输入一个正整数:
输入错误,请重新请输入一个正整数:
输入错误,请重新请输入一个正整数:
输入错误,请重新请输入一个正整数:
输入错误,请重新请输入一个正整数:
输入错误,请重新请输入一个正整数:
输入错误,请重新请输入一个正整数:
输入错误,请重新请输入一个正整数:
输入错误,请重新请输入一个正整数:
输入错误,请重新请输入一个正整数:
输入错误,请重新请输入一个正整数:
...
...

cin 输入原理:

程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入。

int a =0; //a为整形数据,在输入非数字,如字符型数据时,按回车,cin 会认为 a 没有输入(非法输入),不会读取缓冲器中输入的内容;等下次再读取时,发现缓冲区有数据进行读取,因为仍是字符型数据,便还是认为 a 没有输入,不会读取缓冲器的字母;因此造成死循环。

3 解决方法

在while循环的最后面添加两条语句, 缺一不可

cin.clear();
cin.ignore();

其中cin.clear(),清空缓冲区,并将错误的cin流标识,通过这个可以把假状态清除掉;cin.ignore() 解决编译器编译while循环时因在缓冲区找不到合乎条件的数据而出现死循环的情况。

示例2( 正确✔

#include <iostream>

using namespace std;

int main()
{
	int a = 0;
	cout << "请输入一个正整数:" << endl;
	
	while (true)
	{
		cin >> a;

		if (a > 0)
		{
			cout << "成功输入一个正整数" << endl;
			break;
		}
		else
		{
			cout << "输入错误,请重新请输入一个正整数:\\a" << endl;
		}

		cin.clear();
		cin.ignore();
	}

	return 0;
}

当用户输入一个非数字,如字符型时,程序仍具有稳健性

请输入一个正整数:
a
输入错误,请重新请输入一个正整数:
\\
输入错误,请重新请输入一个正整数:
25
成功输入一个正整数

以上是关于如何解决win10系统频繁通知重复消息导致死循环的问题的主要内容,如果未能解决你的问题,请参考以下文章

电脑下面的任务栏总是卡死

一招彻底解决win10开机桌面及任务栏卡死问题

怎么写一个程序让机器CPU占用100

win10自动修复失败无限循环是怎么回事?

win2008启动蓝屏,怎么办?

云帮手在windows下提示虚拟内存不足,如何解决?