問題タブ [qeventloop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
25 参照

qt - 奇妙な信号/スロットの動作

(Qt 5.15.2 での作業) 同じスレッドからシグナル (sig_responseReady) を受け取るメソッドがあります。このメソッドの目的は、応答が受信されるまで待機することです。このメソッドがシグナルを待っている間、このメソッドを呼び出すイベントが原因で、メソッドが再度呼び出されます (そのため、イベントループがネストされます)。ただし、スタック上の最初の waitForResponse は、最大 10 秒間 sig_responseReady シグナルを取得しません (理由はわかりません) が、後で呼び出された waitForResponse が最初にシグナルを取得します。

この設計の結果、入れ子になったイベント ループができました。これは、このスタック オーバーフローの投稿によると、スロット/シグナル処理エラーを引き起こし、回避する必要があります。これが私の問題の原因だと思います。

単一のイベントループだけで同じことを達成する設計はありますか? (思いつきません) waitForResponse を呼び出す関数は、waitForResponse が戻るまで一時停止する必要があります。..非同期にすることはできません。以下の関数で eventloop.exec を QCoreApplication::processEvents(QEventLoop::AllEvents,100) に置き換えてみましたが、それでも同じ奇妙な結果が得られます。(したがって、ネストされたイベントループは問題ではないかもしれません...しかし、原因はわかりません)