WSASend无法结束的问题

DataBuf.len = length;
DataBuf.buf = strBuff;
pIoContext->m_Overlapped.hEvent = WSACreateEvent();
result = WSASend(socket, &DataBuf,1, &SendBytes, 0, &pIoContext->m_Overlapped, NULL);
DWORD a = GetLastError();

result = WSAWaitForMultipleEvents(1, &pIoContext->m_Overlapped.hEvent, TRUE, INFINITE, TRUE);
if (result == WSA_WAIT_FAILED) {
    a = GetLastError();
    fprintf(stderr, "WSAWaitForMultipleEvents failed: %d\n", WSAGetLastError()); 
    //break;
}
result = WSAGetOverlappedResult(pIoContext->m_sockAccept, &pIoContext->m_Overlapped, &SendBytes, FALSE, &Flags);
if (result == FALSE) {
    a = GetLastError();
    fprintf(stderr, "WSASend operation failed: %d\n", WSAGetLastError()); 
    //break;
}
//printf("Wrote %d bytes\n", SendBytes);
WSAResetEvent(pIoContext->m_Overlapped.hEvent);
WSASend一直在被触发,停不下来,不知道为什么

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
WSASend最终无法完成的问题
我采用IOCP模型在多连接大数据量测试的时候,如果多个客户端有异常中断的时候,服务器会出现大量的WSASend操作无法完成的情况,rn也就是:WSASend后出现WSA_IO_PENDING返回,通过GetQueuedCompletionStatus等待WSASend的完成信号却一直无法等到,请问这种情况如何处理?rn时不时要对WSASend操作设一个时间限制?如何设置?rn请高手指点,谢谢。
WSASend()的问题
在服务器端在没有采用多播时可以用,但但采用了多播后,就不能用了,但是能接受到信息,说明已经加入多播组,但发信息发不出去。我查不出原因,请高手作答
关于程序无法结束的问题
程序自己结束不了自己,怎么回事?
WSASend() + recv()的问题
发送端是用大量buf和overlap进行WSASend(iocp)rn接收端是recv(阻塞)进行循环接收。rnrn现在的问题是:发送2000个信息,向本机传输的时候(127.0.0.1)没有问题rn 如果两个程序不在一起,接收端可能接收不全,但是当发送端Sleep(10)的时候rn 可以完全接收rnrn这是为什么呢?rn请各位指教。rn
WSASend发送数据的问题,求解.
完成端口中使用WSASend不停的发送数据(比如100M数据需要发送,每次使用WSASend发送4K),每次发送都不等完成通知,那么这样的话,客户端收到的数据顺序会不会跟我发送时的一样?rn使用send发送肯定一样的.
WSASend问题?急!
在完成端口中我投递了WSASend后用GetQueuedCompletionStatus得到了完成的消息。rn但是我判断传输的字节数量发现,有的WSASend没投递的很成功,于是我就把BUFFER的指针重新指向未投递成功的那部分BUFFER。但是总是失败,我知道肯定是我的数据结构设计的有问题!rnrntypedef enum _tagIO_OPERATION rnrn ClientIoAccept,rn ClientIoRead,rn ClientIoWritern IO_OPERATION, *PIO_OPERATION;rnrnrntypedef struct _tagPER_IO_OPERATION_DATArnrn OVERLAPPED Overlapped;rn WSABUF DataBuf;rn char Buffer[DATA_BUFSIZE];rn IO_OPERATION OperationType;rn int State;rn DWORD RecvBytes;//只表示投递接受未成功的字节数,成功完成后全部清0rn DWORD SendBytes;//只表示投递发送未成功的字节数,成功完成后全部清0rn PER_IO_OPERATION_DATA, * PPER_IO_OPERATION_DATA;rnrn我想问的是在我的PER_IO_OPERATION_DATA结构体中,一个 char Buffer[DATA_BUFSIZE];rn够了吗?是否该给WSASend和WSARecv都分配一个???rnrn假如WSASend和WSARecv都各有一个,如下rnchar SendBuffer[DATA_BUFSIZE];rnchar RecvBuffer[DATA_BUFSIZE];rn我在GetQueuedCompletionStatus后假如发现该WSASend未发送的很完整。我rn将SendBuffer中的数据未发的部分重发的时候,会不会被新的投递过来的WSASend将SendBuffer中的数据冲掉??(每个SOCKET都只有一个结构体)rn如果这样的话我该怎么做?难道是为每个投递的WSASend都分配一个BUFFER???rnrn只有这么多分了。。。rn
关于WSASend的问题
我新建了一个socket并用setsocketop设置了SO_SNDBUF的大小为4096,rn其中有用WSAEventSelect对这个socket的操作!rn最后当我用WSASend发送了一个8096 的buffer时,我只调用了一次就能将这么大的缓冲一次能发送出去,我一开始以为要用WSASend两次呢!为什么一次就能发送完呢?谢谢rn
WSASend的问题 急
WSASend需要一个OVERLAPPEDPLUS结构 这个结构一定要new吗 我在栈上分配可以吗 我测试了一下在栈上分配 有时发送失败 但不敢确定是不是因为在栈上分配的
::WSASend发送数据的问题
在使用设个函数发送数据的时候,数据发送的频率较快,譬如我发送了10次数据这时WSASend也执行rn了10次,但是监控网络上的数据的时候发现发出的数据是8次,其中有两次的数据是两个数据包累叠rn而成的,大概是缓冲区的问题,但是关闭缓冲区会降低性能,又没有其他的方法可以解决这个问题rn吗?使得能够正确的发送数据.
关于 WSASend 问题
BOOL server::Send(void) rn rnDWORD dwBytesRecved; //接收字节数 rnDWORD dwFlags = 0; //标志 rnDWORD numberread=0; rnZeroMemory(&m_oIO, sizeof(m_oIO)); //重叠结构 rnm_oIO.hEvent = WSAEVENT(this); rnchar i; rn Cf(&i); rn printf("%d\n",lsizefile); rnrnBYTE*senddata=new BYTE[lsizefile]; rnrn rn cfile.Read(senddata,lsizefile); rnrnWSABUF wsaSendBuf[2]; //WSABUF结构数组 rn//定义数据包头 rnPACKETHDR hdr; rnhdr.type = ETOC; //数据包类型 rnhdr.len = lsizefile; //数据的长度 rnrnwsaSendBuf[0].buf = (char*)&hdr; //发送数据缓冲区,包头缓冲区 rnwsaSendBuf[0].len = HEADERLEN; //缓冲区的长度, 包头缓冲区长度 rnrnwsaSendBuf[1].buf = (char*)senddata; //发送数据包体 (char*)(LPCTSTR)m_strMeaning rnwsaSendBuf[1].len = lsizefile; //数据长度m_strMeaning.GetLength() rnrnrncfile.Close(); rnrnrn//异步发送数据,ORoutine为完成例程 rnif(SOCKET_ERROR == WSASend(m_s, wsaSendBuf, 2, rn&dwBytesRecved, dwFlags, &m_oIO, ORoutine)) rn rnif (WSAGetLastError() != ERROR_IO_PENDING) rn rnreturn FALSE; rn rn rnrncfile.Close(); rndelete senddata; rnprintf("Send\n"); rnrnrnreturn TRUE; rn rnrnrn[color=#FF0000]delete senddata; 总是执行失败 这是为什么[/color]
请教个wsasend的问题
Wsasend 投递成功后rnGetQueuedCompletionStatus返回的实际传送字节数rn可能小于 指定的数据长度吗?
关于重叠wsasend的问题
如果在局域网执行WSASend(s,&wsaBuf,1,&dwBytes,0,&ol,NULL),测试发现能直接返回NO_ERROR(0),说明执行成功,此时如果用WSAWaitForMultipleEvents()还能得到这次send的吗?rn粗略发现:提交了4次WSASend,得到4次WSASend结果都是NO_ERROR,但WSAWaitForMultipleEvents只返回2次,不知为何,望知者指教!
WSASend 函数参数的问题。
我调用WSASend (Socket, Buffers, 1, &BytesSent, 0, &OverLapped, SendCompFunc),产生如下错误error C2664: 'WSASend' : cannot convert parameter 7 from 'void (unsigned long,unsigned long,unsigned long,unsigned long)' to 'void (__stdcall *)(unsigned long,unsigned long,struct _OVERLAPPED *,unsigned long)'rn None of the functions with this name in scope match the target typernWSASend这个函数的最后一个参数是否是一个回调函数?rn我定义的SendCompfunc()是:void CALLBACK SendCompFunc()rnrn请高手帮忙分析一下。
讨论一下WSARecv和WSASend的问题
这两个函数都可以投递多个WSABUF的缓冲区,,大家讨论以下这样做一般用在什么情况下比较适合?rn对提高网络服务端程序的响应性能有多大改善?rnrn
完成端口 WSASend() 的参数问题
int WSASend ( rn SOCKET s, rn LPWSABUF lpBuffers, rn DWORD dwBufferCount, rn LPDWORD lpNumberOfBytesSent, rn DWORD dwFlags, rn LPWSAOVERLAPPED lpOverlapped, rn LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionROUTINE rn); rnrn要对多个socket发送同样的数据(几十字节) 只调用一次WSASend能实现吗?参数如何写?rnrnlpBuffers 是数组吗?rnrn
WSASend和WSARecv函数问题
WSASend 和 WSARecv函数里有个标志位参数,这个参数起什么作用?是否受流式和非流式的影响?rn  如果要让他可靠地接收或发送数据,是否就是检查到错误时就不断的发送或不断的接收?如果真这样,程序不就陷入了死循环中吗?rnrn多谢指教
关于WSASend的问题(高分)
各位高手:rnrn  我有一段代码是用WSASend发送数据的,是用重叠式IO发送的。我注意到这个函数或是返回发送数据长,或是当返回IO_Pending时,就代表成功执行了重叠操作,然后可以通过wait_object一段时间来判断是返回正确执行还是错误执行。rnrn  我不知道wait_object的等待时间是什么,WSASend是执行完了再返回,还是不执行完就可以返回。等待时间是WSASend发送的时间么?还是发送过程中返回IO_Pending后开始等待的时间?对于同一个地区的网络来讲,这个等待时间一般设为多少合适呢?1分钟?1秒?2秒?rn谢谢!!!!
同时send和WSASend的问题
需要将数据库的数据和向另外一个服务请求返回的结果数据发送到客户端,就需要多线程同时向一个客户端send或WSASend大量数据,send和WSASend之后的GetQueuedCompletionStatus都有可能返回小于发送数据量的数值,这时需要继续发送未发送完的数据,在这个间隙,就可能有另外线程发送了一小段数据到客户端,这样客户端接收到的数据是否会错乱呢?
关于WSASend的问题~
我们都知道,数据在投递的时候,有可能投递不完整~~rnrn例如,我们投递了1024字节的数据,但是实际只发送出去了512字节~rnrn剩下的数据,我们需要重新投递~rnrn但是由于WSASend是异步投递,调用之后立即返回,数据是由系统帮助投递出去的~rnrn现在就有一个问题了~rnrn我们在调用很多次WSASend之后,可能其中有一次投递不完整,我想要知道,如果数据投递不完整,系统会帮助我们自动投递完整吗?rnrn如果不会,那我们岂不是每次投递之后都需要用WSAGetOverlappedResult来检查一下结果,看看是否投递成功和完整?rnrn那这样一来和用send直接投递数据又有什么区别呢?
完成端口WSASend的问题
WSASend完成后,在收到GetQueuedCompletionStatus完成通知以前,WSASend的参数里面的Buffer可以修改或释放吗rn
WSARecv() 和 WSASend()的问题
WSARecv()在加了Overlapped参数后,一定要等这次的overlapped操作成功后才能调用WSASend(),否则会有WSAENOTSOCK错误。rn请问怎么样才能立刻完成上一次的WSARecv()操作?
WSASend的问题,谢谢
[code=C/C++]rn重叠io 套接字模型 , 同步收到数据后,需要不需要WSAReset(事件句柄)?rnrn试验证明:同步收到后,我并没有WSAReset,结果发现:异步再次收到了数据rnrnrn问这个问题的原因: 对于WSARect 的返回值 如果是0,说明是同步操作,rnrn有这种可能行发生的。rnrn那么是同步收到后,那么需要不需要WSAreset?rnrnrnrnrn问题2:rnrn用WSARecv投递io请求来接受数据, 如果接受到后,我想把这个数据以重叠io的方式发给客户端。rnrn用函数WSASend 投递!!对一个客户端需要投递后,自然也有 同步,或者异步的情形,具体看其返回值。rnrn客户端该如何来接受WSASend发送过来的数据呢?rnrn注意:客户端是以 堵塞模型的套接字编程。 rnrn客户端伪代码:rnrnfor(int i=0; i<10;i++)rnrnrnsend(套接字,缓冲区,大小);rnrnrecv(套接字,缓冲工区,大小); //以此来接受WSASend发送的数据,对嘛?rnrnrnrn这样对吗?rnrnrn 问题3:WSARecv WSASend的参数的问题rnrnrnint WSASend(rn _In_ SOCKET s,rn _In_ LPWSABUF lpBuffers,rn _In_ DWORD dwBufferCount,rn _Out_ LPDWORD lpNumberOfBytesSent,rn _In_ DWORD dwFlags, //这个参数设置什么合适呢?rn _In_ LPWSAOVERLAPPED lpOverlapped,rn _In_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutinern);rnrnmsdn并没有说要设置为0,看了不少文章都是0,原因不知道!!!rnrnrn[/code]
关于WSASend和WSARecv的问题
WSASend( s : TSocket; lpBuffers : LPWSABUF; dwBufferCount : DWORD; var lpNumberOfBytesSent : DWORD; dwFlags : DWORD;rnrnlpBuffers的数据结构是什么?如何才能解出里面发送的数据?
不懂WSASend
int WSASend(rn SOCKET s,rn LPWSABUF lpBuffers,rn DWORD dwBufferCount,rn LPDWORD lpNumberOfBytesSent,rn DWORD dwFlags,rn LPWSAOVERLAPPED lpOverlapped,rn LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutinern);rnrn(1) 第3个参数是什么意思?MSDN里写dwBufferCount rn[in] Number of WSABUF structures in the lpBuffers array. rn是lpBuffers的大小吗?英语不过关rnrnrn(2)如果想用WSASend发送“abcdefg”该怎么写?按格式下面的写:rnchar buf[1024]="abcdefg";rnsend(hSocket,buf,strlen(buf),0);
线程无法立即结束?
线程 thread1rnrn 创建新线程: thread2rn ...rn thread2.Abort();rn //这里奇怪的是thread2总要等6秒后才能结束,而不是马上结束,这是怎么回事?rn rnrnrn线程 thread2rnrn for;;rn rn Sleep(6000);// 秒rn rn
链表无法结束输入
初学链表,遇到些问题,运行时一直输入,输入0回车结束不了。。求指教代码如下:rn#includern#define LEN sizeof(struct Student)rnstruct Studentrn char name[20];rn float score;rn struct Student * next;rn ;rnint n;rnstruct Student * creat()rn struct Student * head;rn struct Student * p1,* p2;rn printf("please input records:\n");rn n=0;rn p1=p2=(struct Student *) malloc(LEN);rn scanf("%[^,],%f",&p1->name[0],&p1->score);rn head=NULL;rn while(p1->name[20]!='0')rn n=n+1;rn if(n==1) head=p1;rn else p2->next=p1;rn p2=p1;rn p1=(struct Student *) malloc(LEN);rn scanf("%[^,],%f",&p1->name[20],&p1->score);rn rn p2->next=NULL;rn return(head);rnrnrnvoid print(struct Student * head)rn struct Student * p;rn printf("\nNow, These %d records are:\n",n);rn p=head;rn if(head!=NULL)rn dorn rn printf("%s,%5.1f\n",p->name,p->score);rn p=p->next;rn while(p!=NULL);rn rnrnvoid main()rnstruct Student * head;rn head=creat();rn print(head);rnrn
pthread_join无法结束线程
#pragma comment(lib, "pthreadVC2.lib")rnrn#includern#includernrn#define BARRIER_VALID 0xdbcafernrn#define BARRIER_INITIALIZER(cnt) \rn PTHREAD_MUTEX_INITIALIZER,PTHREAD_COND_INITIALIZER, \rn BARRIER_VALID,cnt,cnt,0rn#define MAX 5555rntypedef struct barrier_tagrn pthread_mutex_t mutex;rn pthread_cond_t cv;rn int valid;rn int threshold;rn int counter;rn unsigned long cycle;rnbarrier_t;rnrntypedef struct numrn int mn;rnnum;rnrnint temp=0;rnint count = 0;rnpthread_mutex_t mut;rnpthread_t thread_id[MAX];rnint padn = 30;rnbarrier_t barrier;rnint unfinish = 1;rnint flag = 1;rnpthread_t *thread_i;rnint barrier_init(barrier_t *barrier,int count)rnrn int status;rn barrier->threshold = barrier->counter = count;rn barrier->cycle = 0;rn status = pthread_mutex_init(&barrier->mutex,NULL);rn if(status != 0)rn return status;rn status = pthread_cond_init(&barrier->cv,NULL);rn if(status != 0)rn rn return status;rn rn barrier->valid = BARRIER_VALID;rn return 0;rnrnrnint barrier_destory(barrier_t *barrier)rnrn int status,status2;rn if(barrier->valid != BARRIER_VALID)rn return EINVAL;rn status = pthread_mutex_lock(&barrier->mutex);rn if(status != 0)rn return status;rn rn if(barrier->counter != barrier->threshold)rn rn pthread_mutex_unlock(&barrier->mutex);rn return EBUSY;rn rnrn barrier->valid = 0;rn status = pthread_mutex_unlock(&barrier->mutex);rn if(status != 0)rn return status;rn status2 = pthread_cond_destroy(&barrier->cv);rn return (status != 0 ? status : status2);rnrnrnint barrier_wait(barrier_t *barrier)rnrn int status,cycle;rnrn status = pthread_mutex_lock(&barrier->mutex);rn if(status != 0)rn return status;rn cycle = barrier->cycle;rnrn if(--barrier->counter == 0)rn rn printf("\n\n\n\n\n\n");rn barrier->cycle++;rn barrier->counter = barrier->threshold;rn if(temp == 0)rn rn temp = 1;rn unfinish = 0;rn flag = 0;rn status = pthread_cond_broadcast(&barrier->cv); rn rn elsern rn temp = 0;rn if(flag == 1)rn rn unfinish = 1;rn flag = 0;rn status = pthread_cond_broadcast(&barrier->cv);rn rn elsern rn if(unfinish == 1)rn rn count++;rn unfinish = 1;rn flag = 0;rn status = pthread_cond_broadcast(&barrier->cv);rn rn elsern rn printf("OK\n");rn getchar();rn rn rn rn elsern while(cycle == barrier->cycle)rn rn status = pthread_cond_wait(&barrier->cv,&barrier->mutex);rn if(status != 0)break;rn rn rn pthread_mutex_unlock(&barrier->mutex);rn return status;rnrnrnrnvoid *run(void *arg)rnrn num *n =(num *) arg;rn int status;rn while(unfinish != 0)rn rn status = barrier_wait(&barrier);rn if(status !=0)rn printf("wait on barrier\n");rn rn if(count <10)rn rn unfinish = 1;rnrn rn printf("the ");rn status = barrier_wait(&barrier);rn if(status !=0)rn printf("wait on barrier\n");rn rn pthread_cancel(pthread_self());rn// pthread_exit(NULL);rn return 0;rnrnrnvoid main(int startNode)rnrn int status,i;rn num *m;rnrn thread_i = (pthread_t *)malloc(padn*sizeof(pthread_t));rn if(!thread_i)rn exit(0);rnrn if(!m)exit(0);rn barrier_init(&barrier,padn);rn for(i=0;i
无法确定输入结束
素数rn时限:1000ms 内存限制:10000K 总时限:3000msrn描述:rnrn素数就是只能被它自己和1整除的数。在这次的问题里,你需要删减出在1到N(包括N)的素数里的一些素数。你的程序要读入一个数N,决定素数段的长度然后如果中间有偶数个素数,输出中间C×2个,如果中间有奇数个素数,输出中间(C×2-1)个。rnrn输入:rnrn输入数据的每一行有两个数字,第一个数字(1<=N<=1000)表示要求的素数段在1和N之间。第二个数字(1<=C<=N)表示要求偶数情况下要输出的中间C×2个;或奇数情况下要输出的(C×2-1)个。rnrn输出:rnrn对于每一组输入的数据,你都要输出N,一个空格,C,一个冒号(:),然后是以上定义的要输出的素数列。如果要输出的素数数目多于时间有的素数,就输出所有的素数。每个数前面有一个空格。rnrn输入样例:rnrn21 2rn18 2rn18 18rn100 7rnrnrnrn输出样例:rnrn21 2: 5 7 11rnrn18 2: 3 5 7 11rnrn18 18: 1 2 3 5 7 11 13 17rnrn100 7: 13 17 19 23 29 31 37 41 43 47 53 59 61 67rnrnrnrn提示:rnrnrn来源:rnrn2006西北工业大学程序设计竞赛决赛题Brn这道题我写出来了,但是无法确定他在什么时候结束,造成输出超限,请教,如何解决。
MFC无法结束线程
具体是这样的, 在按钮点击结束线程是可以的, rn但是如果在别的源文件调用就不行了 ,比如A.cpp 写了一个关闭全部线程的函数 , 点击按钮是可以关闭的rn我发现如果别的源文件调用开始线程的函数, 在按钮那边也不能结束了, rn或者按钮点了开始多线程, B.cpp调用A.cpp的结束线程函数也会失效rnrn我把A.cpp的函数写成类成员, B.cpp调用也不能结束rnrn.....简单的说就是多线程开始和结束的函数都写在A.cpp, 如果A开始的话, B不能结束, B开始的话, A也不能结束rnrnA.cpp的 rnDWORD CMainDialogWnd::开始脚本()rnrn Thread11 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)线程11, NULL, NULL, NULL);rn Thread12 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)线程12, NULL, NULL, NULL);rn Thread13 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)线程13, NULL, NULL, NULL);rn Thread14 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)线程14, NULL, NULL, NULL);rn Thread15 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)线程15, NULL, NULL, NULL);rn Thread16 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)线程16, NULL, NULL, NULL);rn return 1;rnrnDWORD CMainDialogWnd ::Stop()rnrn TerminateThread(Thread11, 1); TerminateThread(Thread14, 1);rn TerminateThread(Thread12, 1); TerminateThread(Thread15, 1);rn TerminateThread(Thread13, 1); TerminateThread(Thread16, 1);rn return 1;rnrn// =================================================================================rnB.cpp的 : rnBOOL __Clear()rnrnCMainDialogWnd aa;rnaa.Stop();rnreturn TRUE;rnrnrn有错误吗, 就是A开始线程A能停止, 但是B不能调用它停止.....
MySQL命令无法结束
输入完sql语句后 输入分号结束,发现无法结束,原因一般是引号不对称导致的。再输入'; 或者对称的分号就可以结束。 我的是输入了' ‘一个是中文一个是英文。错误信息里面有提示,仔细看一下就会发现。 ...
线程为什么无法结束?
在form中创建了一个线程brn b=gcnew Thread( ThreadStart(form,&form::print));rn b.Name="b";rn b.Start();rnrnrnrn然后在form中增加一个鼠标按下的事件,让线程b结束rnrn b.Abort();rnrnrn但是在调试的时候我发现,程序在关闭了之后,返回到visualrndebug显示主线程仍然在运行(也就是必须手工去按stop debugging按钮程序才真正退出)rnrn请问这是为什么?
程序无法完全结束
在form中点右上角的X关闭程序时,我程序里还有一个循环没结束,请问有没有什么命令将所有正在运行的循环结束?谢谢
icesword无法结束的程序
一个很简单的小程序,几行的代码 此程序只针对icesword 谢谢!! ---by aspd199 ---2008-8-9
程序无法结束
我做了个信息管理系统,本来关掉主窗口之后程序就会相应地结束,但我今天加了个登陆窗口,经过登陆界面之后再进入主窗口,但现在把主窗口关掉后,程序还没结束,还在继续运行,这是怎么回事?rn
线程无法结束
是个文档视图应用程序,就启动了一个线程。结果程序结束不掉。怎么回事呀?在View的OnDestroy 中有结束线程的语句。
循环无法结束
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。rnrn句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。rn例如输入“I am a student.”,则输出“student. a am I”。rn我写的程序如下,可是循环结束不了啊rn#includern#includernvoid main()rnrn char a[20][15],*b[20];rnrn int i,j=0;rn for(i=0;i<20;i++)rn b[i]=a[i];rn printf("请输入一个句子:\n");rn for(i=0;;i++)rn for(j=0;;j++)rn getchar(a[i][j]);rn if(a[i][j]==' '||a[i][j]=='\0') break;rn if(a[i][j]=='\0')rn break;rnrn rn for(j=i;j>=0;j--)rn printf("%s\n",b[j]);rn
程序无法正常结束
遇到一个问题,程序在调用主窗口的close之后,不能正常结束,只是所有窗口关闭了,在任务管理器中看到进程仍然存在,请哪位大虾解释一下这是什么原因rn 所用builder版本为6.0,程序中使用了BussinessSkinForm
进程管理器(结束系统无法结束的进程)
有些病毒无法结束和删除,利用它可以结束并删除可疑进程!!
为何主线程结束,程序无法结束?
[code=C/C++]rnvoid main()rnrn UploadThread thread(new FileMessage(),0);rn printf("uploading...\n");rn thread.start();rn //thrd.wait();//不wait为什么会一直卡住?rn printf("main thread exit");rnrn[/code]rn
HOOK WSASend
HOOK WSASend, 但是不调用原函数,发现会卡死,如何发通知?rnrn宿主call WSASend(0x000004D0, 0x0012D5D8, 0x00000001, 0x0012D5E0, 0x00000000, 0x00000000, 0x00000000)然后一直卡死,调用原函数就不会,但是那样麻烦
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池