我在对话筐初始化的的时候,开了一线程hThread = (HANDLE)_beginthreadex( NULL, 0, (unsigned int (__stdcall *)(void *))SetUpDownLoadConnect, this, 0, &threadID )
不停的,看一个list里面有值存在没有,对其进行一些操作问题时,有可能,我会要清空这个list,这个程序有可能因为这个动作崩溃的,怎么办?
清空的时候,先让,线程阻塞一下么?
完后继续让线程开始?
不停的,看一个list里面有值存在没有,对其进行一些操作问题时,有可能,我会要清空这个list,这个程序有可能因为这个动作崩溃的,怎么办?
清空的时候,先让,线程阻塞一下么?
完后继续让线程开始?
而不是让你把错误发出来让我们来给你找原因,而且你所发来的错误根本就不能明确知道错误信息在独立线程里面,不要直接操作窗口类,最好是传窗口句柄来让线程操作
不然在销毁窗口的时候,有可能在主线程里面这个类已经释放,但是线程里面还不能发现这个类已经销毁再有就是你说的这个 list,是一个链表?还是一个列表窗口?如果是链表,就用临界锁或者类似功能的东西来做如果是列表窗口,也可以用临界锁或者类似的东西来做,还有就是你程序崩溃,是发生在删除 list 成员时发生,那肯定是访问到了无效序号而引发的问题了。这情况一般发生在操作窗口类的情况
所以如果你传窗口句柄进去,再用 sendmessage 来操作,起码发生错误不会崩溃,你所要做的就是判断返回值
而不是让你把错误发出来让我们来给你找原因,而且你所发来的错误根本就不能明确知道错误信息在独立线程里面,不要直接操作窗口类,最好是传窗口句柄来让线程操作
不然在销毁窗口的时候,有可能在主线程里面这个类已经释放,但是线程里面还不能发现这个类已经销毁再有就是你说的这个 list,是一个链表?还是一个列表窗口?如果是链表,就用临界锁或者类似功能的东西来做如果是列表窗口,也可以用临界锁或者类似的东西来做,还有就是你程序崩溃,是发生在删除 list 成员时发生,那肯定是访问到了无效序号而引发的问题了。这情况一般发生在操作窗口类的情况
所以如果你传窗口句柄进去,再用 sendmessage 来操作,起码发生错误不会崩溃,你所要做的就是判断返回值非常感谢,我再看看怎么回事,谢谢了
而不是让你把错误发出来让我们来给你找原因,而且你所发来的错误根本就不能明确知道错误信息在独立线程里面,不要直接操作窗口类,最好是传窗口句柄来让线程操作
不然在销毁窗口的时候,有可能在主线程里面这个类已经释放,但是线程里面还不能发现这个类已经销毁再有就是你说的这个 list,是一个链表?还是一个列表窗口?如果是链表,就用临界锁或者类似功能的东西来做如果是列表窗口,也可以用临界锁或者类似的东西来做,还有就是你程序崩溃,是发生在删除 list 成员时发生,那肯定是访问到了无效序号而引发的问题了。这情况一般发生在操作窗口类的情况
所以如果你传窗口句柄进去,再用 sendmessage 来操作,起码发生错误不会崩溃,你所要做的就是判断返回值list就是stl 的链表么,里面装的信息类。不是窗口链表
而不是让你把错误发出来让我们来给你找原因,而且你所发来的错误根本就不能明确知道错误信息在独立线程里面,不要直接操作窗口类,最好是传窗口句柄来让线程操作
不然在销毁窗口的时候,有可能在主线程里面这个类已经释放,但是线程里面还不能发现这个类已经销毁再有就是你说的这个 list,是一个链表?还是一个列表窗口?如果是链表,就用临界锁或者类似功能的东西来做如果是列表窗口,也可以用临界锁或者类似的东西来做,还有就是你程序崩溃,是发生在删除 list 成员时发生,那肯定是访问到了无效序号而引发的问题了。这情况一般发生在操作窗口类的情况
所以如果你传窗口句柄进去,再用 sendmessage 来操作,起码发生错误不会崩溃,你所要做的就是判断返回值
传窗口句柄进去,再用 sendmessage 来操作,起码发生错误不会崩溃?为什么这么说?
前面版主说的很明白了,在操作list相关时,先lock,之后unlock
g_lock.Lock();
查看list
g_lock.UnLock();清除list时
g_lock.Lock();
lst.clear();
g_lock.UnLock();