開始された単純な TTimer に問題があり、その OnTimer イベントがメイン アプリ スレッドで実行されます。コードは次のようになります。
procedure TForm1.DoSomeStuff();
begin
OmniLock.Acquire;
try
Parallel.Pipeline.NumTasks(MaxThreads).Stage(StageProc).Run;
if (MyTimer = nil) then
begin
MyTimer := TTimer.Create(nil);
MyTimer.Interval := 60 * 1000; // timer fired every 60 seconds
MyTimer.OnTimer := MyTimerEvent;
MyTimer.Enabled := True;
end;
finally
OmniLock.Release;
end; // try/finally
end;
単純なプロジェクト/デモでコードを実行すると、すべてが正常に機能しますが、私のアプリ (Omni Thread Library v3 を使用) では、タイマー イベントが発生しません。
私はそれが何もないと確信しています、私は何が間違っているのか理解できません!
私は三重にチェックしました:MyTimer
コードで一度だけ割り当てられ、そのOnTimerイベントが正しく割り当てられているなど...
Delphi 2010 を使用しています
誰でもこれを修正する方法を知っていますか?