問題タブ [peekmessage]
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.
c# - WinApi - PeekMessage は常に False を返します
PeekMessage を動作させることができません。実際には、メッセージが殺到することが予想されますが、戻り値は 0 です。
私は WinForm を使用し、メッセージを覗くバックグラウンド スレッドを開始し、マウスでウィンドウを使用します。ウィンドウはいつものように使用できますが、メッセージをのぞくことができません。私は何を間違っていますか?最後のエラーは常に 0 です。
解決済み:
Show()
フォームを表示するためにメインスレッドを呼び出しました- メインスレッドをリダイレクトしてメッセージをログに記録しました
- (XY の問題ではなく、PeekMessage が機能するか、少なくとも使用方法を理解する必要がありました)
(私が犯したエラーを教えてくれてありがとう)
c# - コードの最適化により、PeekMessage の使用時に null 参照例外が発生する
この gamedev.stackexchange スレッドで説明されているゲーム ループを使用しています: https://gamedev.stackexchange.com/questions/67651/what-is-the-standard-c-windows-forms-game-loop
Debug ビルド タイプを使用している場合はすべて問題なく動作しますが、Release を実行すると、null 参照例外が発生します。コードの最適化を有効にした場合にのみ発生するようです。これは、同じことを行うベアボーンの例です。フォームは完全に空白で、この例ではボタン/コントロールはありません。
これを実行すると、forms.dll 内の外部コードで例外が発生すると言われ、このフォームを開始する Application.Run("etc") の後にスローされます。スタック トレースはあまり役に立ちません。Application.Run と一連の外部コードだけです。
何が原因なのかはわかりませんが、Idle イベントへのサブスクリプションをコメントアウトするとエラーが発生しないため、PeekMessage の呼び出しに関係があることはわかっています。
副次的な質問として、ここで "NativeMessage" 構造体を宣言する必要があるのはなぜですか? カットしても問題はないようですが、このゲームループを使用するすべての例にはそれが含まれています。
c++ - PostThreadMessage が機能しない
私は、他のスレッドの操作を中断することなく、他のスレッドからイベントを発生させることができるイベント処理スレッド クラスを持っています。デストラクタが呼び出されると、スレッドに終了メッセージを送信しますが、そのメッセージ ループはこのメッセージを受信していないようです。
GetMessage
終了メッセージを送信しても返されません。そしてGetLastError()
、呼び出しの後に使用するPostThreadMessage
と 1444 が得られERROR_INVALID_THREAD_ID
ます。
PeekMessage
100%Sleep
のCPUを使用するため、使用したくありません。
ありがとう
c# - 無制限のタイムアウトで MSMQ メッセージをピークする
Microsoft Message Queue (MSMQ) からメッセージをピークするアプリケーションを作成しています。アプリケーションが順番に (最初のメッセージから最後のメッセージまで) MSMQ メッセージをピークするようにします。最後のメッセージを完全にピークした後、MSMQ が新しいメッセージを受信するまで、メイン スレッドはブロックされます。TimeSpan=MessageQueue.InfiniteTimeoutでMessageQueue.Peek(TimeSpan, Cursor, PeekAction) メソッドを
既に使用しており、問題があります。 (約 1000 日)、私は既に TimeSpan = TimeSpan.MaxValue を切り替えましたが、成功していません。解決策やアドバイスを教えてください。ありがとう!
私のコードは次のようになります:
rabbitmq - IBM MQ でのメッセージのピーク
MSMQ には、ユーザーがメッセージを実際に消費せずに覗き見ることができる機能があります。つまり、MessageID に基づいてキュー内の次のメッセージを確認します。メッセージに興味がない場合は、メッセージをキューに戻すことができます (つまり、未確認のメッセージがキューに追加され、メッセージ ID が保持されます)。
同様の機能が RabbitMQ にも存在します。ただし、RabbitMQ では、クリーンな方法で行われるわけではありません。メッセージをキューから取り出して確認応答を送信しないことでメッセージのピークをシミュレートできるため、RabbitMQ はそのメッセージをキューに戻します。ただし、未確認のメッセージがキューに再度追加されると、RabbitMQ がメッセージの順序を変更し、メッセージ ID をインクリメントできることを読みました。
以前にこの問題に遭遇した人はいますか。
また、IBM MQ がピーク アンド シークのこの動作/機能をサポートしているかどうかを知っている人はいますか?
よろしくD