Thread Rating:
  • 420 Vote(s) - 2.91 Average
  • 1
  • 2
  • 3
  • 4
  • 5
ボタンの同時押しを制御する
05-16-2013, 07:48 PM,
#2
RE: ボタンの同時押しを制御する
”イベントキューという考えが”と書かれているとおり、通常はイベントはシングルスレッドで
処理されて、ショートカットキーをほぼ同時に2つ押しても、ボタンを順に2つ押した場合と同じ
動作になりそうなので、キーイベントだからというよりも、イベント処理中に他のイベント処理
が割り込まれないようにするにはどうするか?というテーマですね。

イベントハンドラから呼ばれた処理の実行中に他のイベントハンドラが呼ばれるのは
イベントハンドラから呼び出す処理がマルチスレッド処理の場合か、シングルスレッドでも
時間がかかる処理内でdispatch-eventsプロシージャを呼び出して意図的に他の
イベントを処理するデザインにした場合だと思います。

このような場合、ある状態の間に特定のキーイベントを無視するためにイベントキューを
直接操作して特定のキーイベントを抜くというような方法はCurlに限らず安全でない
手段の部類だと思いますので、イベントハンドラが呼ばれた後の処理で対応するのは
どうでしょうか?

ある状態の間は各種イベントの扱いを変えたいという場合、内部の処理状態をフラグや
簡単なステートマシンで管理して、イベントハンドラが呼ばれた際に内部状態が処理中の
場合はなにも処理をしない、という実装をCurl以外のGUIアプリでもよく見かけます。


Messages In This Thread
RE: ボタンの同時押しを制御する - by dyoshida - 05-16-2013, 07:48 PM
Forum Jump:


Users browsing this thread:
1 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('898')