由于线程退出或应用程序请求,已中止IO *** 作?

由于线程退出或应用程序请求,已中止IO *** 作?,第1张

由于线程退出或应用程序请求,I / O *** 作已中止。

有很多可能导致这个错误的事情,例如一些关键的文件损坏。此外,在其他Windows管理单元中也可能出现同样的错误,例如在设备管理器中或运行第三方软件时。这个帖子将帮助您处理这个问题,使用一些普遍接受的建议,下面提到

修复 I / O *** 作由于线程退出或Windows 10/8中的应用程序请求而中止。1/8/7

1.当您收到此错误时重新启动机器,因为在某些情况下重新启动Windows可能会有所帮助。

2.作为故障排除的第一步,您必须在管理命令提示符中运行SFC / SCANNOW命令。

3.如果系统文件检查器发现损坏的文件,但可以

4.在设备管理器中收到此错误的用户应首先更新其系统上的所有现有设备驱动程序。还要确保你

5.如果你在Windows上使用的某些第三方软件可能会中断本机管理单元,从而导致此类错误。所以如果你使用很多第三方工具,你可以尝试干净启动。只需运行msconfig命令,请转到服务选项卡,然后选中隐藏所有Microsoft服务,然后单击禁用所有按钮。重新启动并检查问题的状态。您也可以逐步执行,对于每个程序,逐一禁用相应的服务,并在问题解决时继续检查。

6.如果问题仍然存在,您可以继续刷新Windows 10,这样不会影响您的数据。

先来看这样一段代码:

#include <windows.h

#include <cstdioclass T{public:~T(){puts(&quotdestruction&quot)}}DWORD WINAPI ThreadProc(LPVOID){T tExitThread(0)}int main(){CreateThread(NULL, 1024, ThreadProc, NULL, 0, NULL)

Sleep(1000)return 0}

这是一个简单的线程调用的例子,为了设置线程的退出码,有的人喜欢调用ExitThread退出线程,但这不是一种好的方式,运行这个程序就会发现,ThreadProc中的局部变量t没有调用析构函数

很多人没有意识到,ExitThread这个函数有强制关闭线程的意思,强制关闭,就不是正常退出,ExitThread函数后面的代码将不能被执行。而像动态变量的析构函数是在函数花括号结束处被调用的,这些代码是编译器隐式地添加到ExitThread之后的内容。所以,如果直接调用ExitThread,析构函数将被跳过,这在一些程序中将是一个严重的问题。而退出码的设置,也只需要用一个return就行了。上面的代码应该写成这样:

DWORD WINAPI ThreadProc(LPVOID){T treturn 0}类似的函数还有ExitProcess,进程正常退出的情况也不应该使用ExitProcess,原因如上面的ExitThread一样,ExitProcess是强制退出一个进程,析构函数及进程退出时必须的一些运行库清理工作也会因强制退出而不能被执行。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12012048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存