active basic初心者です。
Timer関数を利用して下記のようなカウンタ表示を作ったのですが、しばらくするとメモリの使用量とCPU使用率が上昇して、カウンタ表示のカウントアップのタイミングが遅くなってしまいます。
Timerを使用してもCPU使用率が上がらなくきちんと定期的にカウントアップしてくれる方法をどなたか教えてください。
Sub MainWnd_CommandButton1_Click()
SetTimer(hMainWnd, 0, 10, 0)
End Sub
Sub MainWnd_Timer(TimerID As DWord)
i = i + 1
SetWindowText(GetDlgItem(hMainWnd, EditBox1), Str$(i))
End Sub
TypeDef THREADPROC = *Function(ByVal lpParameter As VoidPtr) As DWord
Dim hThread As HANDLE
Dim bThread As BOOL
Function TimerThread(ByVal lpParameter As VoidPtr) As DWord
Dim i=0 As Long
While bThread
i++
SetWindowText(GetDlgItem(hMainWnd,EditBox1),Str$(i))
Sleep(10)
Wend
CloseHandle(hThread)
hThread=NULL
End Function
Sub MainWnd_CommandButton1_Click()
Dim dwThreadID As DWord
If bThread Then
SetDlgItemText(hMainWnd,CommandButton1,"スタート")
Else
hThread=CreateThread(
ByVal NULL,0,
AddressOf(TimerThread) As THREADPROC,
NULL,0,VarPtr(dwThreadID))
SetDlgItemText(hMainWnd,CommandButton1,"エンド")
End If
bThread Xor= TRUE
End Sub