GUI に使用するフレームワークによって異なります。
基本的には、次の疑似コードになります。
bool g_isValueModified = false ;
Value g_value ;
void setValue(Value value)
{
g_value = value ;
g_isValueModified = true ;
}
void updateValueOnGUI()
{
if(g_isValueModified)
{
g_isValueModified = false ;
// put here the code to set the value in the GUI widget
}
}
メソッドsetValue
は必要なだけ呼び出す必要がありupdateValueOnGUI
ますが、メソッドは、たとえば 10 ミリ秒または 100 ミリ秒ごとに 1 回呼び出す必要があります。
この非同期動作を実現するには、次のいずれかを行います。
- 生の Win32 の場合は、Win32 タイマーを使用して WinProc を呼び出します
- 高度な GUI フレームワークでは、タイマーを使用します
- または、高度な GUI フレームワークでは、2 つの別個のスレッドを使用します。1 つはコード実行 (set メソッドを使用) 用、もう 1 つは GUI 実行 (更新の実行) 用で、g_value と g_isValueModified がマルチスレッド セーフな方法で書き込み/読み取りされるようにします (つまり、ロック、クリティカル セクションなど)。