为什么我编的程序在运行的时候就干不了别的事了? 我编写的程序在运行大量的数据需要等待的时候,程序就会进入未响应阶段,不能够做别的事。直到全部运行完成后,才能做别的事,这是为什么?还请有经验的人不吝赐教!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的程序是单线程的呀,它在运行时会使用所有的CPU资源,其他程序得不到计算时间当然不能工作了一般在这样的工作中我们会在循环中加入doevents把控制权交换给操作系统,这样其他任务也能得到资源分配了 _beginthread或者CreateThread都行,要例子吗?? 在运行大量的数据的程序中或大的循环中加入:MSG msg;while( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE) ){ TranslateMessage( &msg ); DispatchMessage( &msg );}当然用多线程也不错。 #include "stdafx.h"BOOL flag;DWORD WINAPI ThreadProc(void*pParam){ DWORD cnt=*((DWORD*)pParam); DWORD things=0; for (DWORD i=0;i<cnt && flag;i++){ things++; } return 0;}int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ flag=TRUE; DWORD b=0x87654321; HANDLE x=CreateThread(0,0,ThreadProc,&b,0,0); // Main message loop MSG msg; while(GetMessage(&msg, NULL, 0, 0)) { /* Until WM_QUIT message */ switch(msg.message){ case WM_QUIT: flag=FALSE; WaitForSingleObject(x,5000); return 0; case WM_CLOSE: flag=FALSE; WaitForSingleObject(x,5000); return 0; } TranslateMessage(&msg); DispatchMessage(&msg); } return 0;} 求一个tab自绘加背景图片的例子 Socket设为成为非阻塞方式无效 C++中如何限定用户输入数字? 谁有Winpcap源码? 如何在Static控件中显示文本,并改变背景颜色! 主程序和登陆对话框的显示次序问题,立即给分 为什么我在使用AfxOleInit()(ADO中),总提示 AfxOleInit没有定义? 下面的界面如何实现呢,希望有会的人指导一下 在对话框添加一张位图,并且在特定矩形范围内移动,怎么解决闪烁的问题 初学VC想要telnet客户端编程源代码学习以下,谁又? VC6.0的补丁那里能下载的到,我到微软的网站上只看到有关C++.net的信息。 请教指针高手(基本指针)
一般在这样的工作中
我们会在循环中加入
doevents
把控制权交换给操作系统,这样其他任务也能得到资源分配了
MSG msg;
while( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}当然用多线程也不错。
DWORD WINAPI ThreadProc(void*pParam)
{
DWORD cnt=*((DWORD*)pParam);
DWORD things=0;
for (DWORD i=0;i<cnt && flag;i++){
things++;
}
return 0;
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
flag=TRUE;
DWORD b=0x87654321;
HANDLE x=CreateThread(0,0,ThreadProc,&b,0,0); // Main message loop
MSG msg;
while(GetMessage(&msg, NULL, 0, 0)) {
/* Until WM_QUIT message */
switch(msg.message){
case WM_QUIT:
flag=FALSE;
WaitForSingleObject(x,5000);
return 0;
case WM_CLOSE:
flag=FALSE;
WaitForSingleObject(x,5000);
return 0;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}