我正在Qt中开发一个应用程序,我需要从客户端向另一台服务器发送异步post / get请求。我的应用程序已经有一个线程,我想用自己的事件循环创建一个不同的线程来发送post / get请求。
是否可以使用
执行此操作提前致谢。
答案 0 :(得分:0)
由于QNetworkAccessManger异步发出所有请求,因此您无需执行任何操作。 阅读更多http://qt-project.org/doc/qt-4.7/qnetworkaccessmanager.html
答案 1 :(得分:0)
您必须记住, QObject 具有线程亲和力,即获取“where”对象的实例化。这意味着如果没有创建事件循环,Qt不知道从另一个线程接收事件(和信号)而不是对象的线程。请查看此link以获取更多信息。
一种好方法是创建一个实现逻辑的类,并将其实例化为 QThread 的特定子类的run方法。让我用代码解释一下:
class WorkerClass : public QObject
{
// Your logic
public slots:
void doWork();
};
class ThreadClass : public QThread
{
WorkerClass* m_worker;
WorkerClass* getWorker();
...
void run()
{
// A new thread is created
WorkerClass instance; // Get thread affinity
m_worker = &instance;
exec(); // Start event loop
m_worker = 0;
}
....
};
int main(int argc, char* argv[])
{
QCoreApplication app(arc, argv);
ThreadClass pThread = new ThreadClass();
pThread->start();
pThread->getWorker()->doWork(); // do work into worker's thread
// Other tasks
pThread->quit();
delete pThread;
app.quit();
}
发送到WorkerClass的每个事件或信号都会“跳转”到要处理的线程。
我希望这会对你有所帮助。