2012-04-16 56 views
0

做了相当多的研究,但找不到答案。我有一个应用程序,它是通过创建从QObject派生的实例来构建的,我将移动到不同的线程。在这些“线程”中,我有一个QNetworkAccessManager,我可以在其中向Azure休息。我现在的问题是我有一些快速发生的重试逻辑。例如,如果容器不存在,则需要为要重试的请求创建它(放置blob)。问题是如果在创建容器后put blob请求发生得太快,它将无法上传任何内容。另外,我想增加两个人之间的时间,以便他们在彼此之后不会很快发生。强制线程从内部进入睡眠的最佳方式是什么?QThread内部的睡眠功能

回答

1

我可能最终会使用QTimer和信号/插槽的组合。例如:

// Slot 
void retry() { ... } 

... 

// Execute retry code in 1 second: 
QTimer::singleShot(1000, this, SLOT(retry())); 
+0

怎么样?哪里?试图在一个函数内使用它,但它不允许 – chikuba 2012-04-16 04:33:11

+0

我认为使用QThread :: sleep(),你必须从QThread派生你的类 – Kunal 2012-04-16 04:51:13

+0

啊,是的,我忘了它被保护。重写我的答案... – Chris 2012-04-16 05:17:57

1
+0

我可以然后就这样做 - >线程() - >等待(X)?在被移动到单独线程的objecthirerchy中的函数之一内? – chikuba 2012-04-16 21:05:45

+0

如果this-> thread()是你函数运行的线程,我会说是。试试吧。 – RedX 2012-04-17 07:03:23