草庐IT

QT多线程

全部标签

c++ - MFC WinApp在不同线程中调用InitInstance和OnAppExit/destructor

我在我们的一个客户环境中遇到问题-当我在OnAppExit(或析构函数)中使用AfxGetApp()->WriteProfileString时它不起作用。我无法在任何地方复制它。我追踪到OnAppExit是从与InitInstance不同的线程调用的——同样,这在我的任何机器上都不是真的。这会是问题所在吗?而且,为什么OnAppExit在不同的线程中被调用?谢谢。 最佳答案 如果您的应用中有线程生成错误并调用exit,则OnAppExit可能会在不同的线程上被调用。在正常使用情况下,OnAppExit应该只在您的主线程中调用。这是e

windows - 构建Qt时复制qmake.exe出错

我正在尝试构建Qtqt-everywhere-opensource-src-4.7.3按照http://doc.qt.nokia.com/4.7/install-win.html中的说明进行操作.我已经使用vcvars32.bat设置了visualstudio2008变量。但是我在运行配置命令时遇到这样的错误:GeneratingCode...link-OUT:qmake.exeproject.objmain.objmakefile.objunixmake.objunixmake2.objmingw_make.objoption.objwinmakefile.objprojectgen

c# - 我的线程在就绪队列中吗?

我需要记录特定线程在就绪队列中的时间和时间。我想知道是否有一种编程方式可以用C#来做到这一点。如果您需要更多信息,请告诉我...提前致谢,罗腾瓦隆。 最佳答案 您可以检查Thread对象的ThreadState属性。在此处查看可能的值:http://msdn.microsoft.com/en-us/library/system.threading.threadstate.aspxWaitSleepJoin表示它正在等待某事,Running表示据我所知它在“就绪队列”中。希望对您有所帮助。

c++ - Windows、Mingw Qt 应用程序不在部署的计算机上运行

我用Mingw创建了一个Qt应用程序。将所需的DLL复制到目录后,应用程序可在开发计算机上正常运行。但是,在外部计算机上部署时,应用程序根本无法运行。更新:此外,该应用程序通过QtSql使用Sqlite3。 最佳答案 很可能您仍然缺少一些dll。运行应用程序后检查Windows事件日志是否有任何错误。(管理工具->事件查看器)。尝试从命令提示符窗口启动应用程序。尝试DependencyWalker.另一个想法是缺少一些配置文件或注册表设置。仔细检查Qtdocs用于部署WindowsQt应用程序。

python - 如何使用 Squish QT 确定 Python 中的 Windows 版本?

谁知道如何确定Windows版本??例如对于32位和64位Windows:-WindowsXP家庭/专业版-WindowsVista商务版/旗舰版...等-Windows7家庭普通版/家庭高级版/专业版/旗舰版...等我想知道是否可以从注册表或PythonAPI中检索此信息??谢谢。 最佳答案 如果ctypes不起作用(由于32位还是64位?),这个hack应该:defget_Windows_name():importsubprocess,reo=subprocess.Popen('systeminfo',stdout=subpro

windows - Windows 中允许线程等待直到另一个线程解除阻塞的正确线程同步对象是什么?

我有一个在Windows下运行的Delphi应用程序需要阻塞,直到另一个线程已传送数据。换句话说,我需要等待来自特定线程的同步对象,我可以将其置于非信号状态,就好像另一个线程拥有该对象的所有权一样,这样当我调用WaitFor()线程阻塞,直到其他线程之一解除它的阻塞(有多个潜在的线程可以解除并且事先不知道是哪一个)。请注意,所有线程都可以访问共享数据区域,因此访问公共(public)同步对象不是问题。我认为Events是正确的选择,直到我读到RaymondChen这篇关于PulseEvent()问题的令人不安的博文:http://blogs.msdn.com/b/oldnewthing

c# - 访问 SQL CE 数据库的线程安全方式

背景:在我的WindowsPhone项目中。我使用本地SQLCE数据库来存储日期。使用LINQtoSQL以编程方式创建数据库表。这个数据库是通过几个线程中的各种数据上下文实例访问的。问题是:我为我的应用程序的用户提供了一个选项来清除所有数据并注销。当用户选择它时,我使用数据上下文的DeleteDatabase方法删除数据库。但是,我总是收到数据库正在被另一个进程使用的错误,因此无法删除。任何朝着正确方向的插入都会让我开心。 最佳答案 Andy如上所述(老实说他们打败了我)问题是在另一个进程仍然打开连接时访问数据库。基本上可以通过将针

c# - 锁定文件同时保留在同一线程中读取/追加/写入/截断的能力?

我有一个文件,粗略地说,包含应用程序的状态。我想实现以下行为:当应用程序启动时,锁定文件,以便其他应用程序(或用户本身)无法修改它;从文件中读取之前的应用状态;...做工作...用新状态更新文件(给定文件格式,涉及重写整个文件;操作后文件的长度可能会减少);...做工作...再次更新文件...做工作...如果工作失败(应用程序崩溃),则解除锁定,文件内容保留为执行前一个工作单元后的内容。看来,要重写文件,应该使用Truncate选项打开它;这意味着每次他们想要重写文件时都应该打开一个新的FileStream。所以看起来我想要的行为只能通过这种肮脏的方式来实现:当应用程序启动时,读取文件

c++ - 是否可以在一个线程遇到异常时卡住所有线程

我能够打印在运行时捕获异常的线程的堆栈跟踪。我还需要打印在同一进程中运行的其他线程的踪迹。我有兴趣找到一种在一个线程中捕获异常后立即卡住所有线程的好方法。现在,我所能做的就是查询每个事件线程,然后在其上执行SuspendThread()。但是,这将导致每个线程在捕获到初始异常后执行的时间更长一些。有没有办法立即让每个线程挂起?谢谢。 最佳答案 您是否尝试从捕获异常的工作线程使用PostMessage()到GUI线程?建议的简要步骤:1)GUI线程生成少量工作线程2)工作线程PostMessage()一旦捕获到异常3)GUI线程接收消

C++ 将对象传递给线程

我有一个关于我不太理解的行为的问题:我有两种C++代码:CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)clientThread,(LPVOID)connectionSocket,0,NULL);主题:Clienta;a.clientsocket=connectionSocket;a.testText()a.sendSocket();工作正常(sendSocket向套接字发送一些测试数据)。但是如果我这样做Clienta;a.clientsocket=connectionSocket;CreateThread(NULL,0,(LPTHREAD_S