Well, I hate replying to something off the front page, but blame my lack of home internet. >.>
and I really just wanted to throw this up here.

Yes, its relatively safe but can be quite intrusive. I use Kmemo, think of it as a bit like TMemo, as a user types into it, each key press triggers an OnChange event, if you then choose to save the contents of the memo on each OnChange, a fast typer can easily bog the system down. Once you start queuing those saves up, you start loosing the advantages of the Unix disk caching and users sees the application as 'slow'.
I've been using this for a 'search while typing' search box, so that it doesn't search large files which each key press:
PROCEDURE TForm1.Wait(dt: QWord);
var
tc: QWord;
BEGIN
tc := GetTickCount64;
while (GetTickCount64 < tc + dt) and (not Application.Terminated) do
Application.ProcessMessages;
END;
PROCEDURE TForm1.Itm_Srch_EditChange(Sender: TObject);
var
t : string = '';
l : integer = 0;
begin
t := Itm_Srch_Edit.Text;
l := Length(Itm_Srch_Edit.Text);
if (Itm_Srch_Edit.Text <> '') then
Wait(750);
if (Length(Itm_Srch_Edit.Text) = l) AND (Itm_Srch_Edit.Text = t) then
begin
<do search>
end;
end;
(iirc, the 'Wait' bit was stolen from GetMem

)
It saved me SO MUCH 'lag' time when searching listboxs with like 20,000+ items....
(Now a TStringGrid, but I kept the code anyways, ya know, jic.)
I imagine something similar could also be used for a TMemo to prevent saves while the user is typing, and wait till they stop for a second.
...or whatever program youre working on that has constant user input.
What you do in that case is save a copy each X minutes or in an OnIdle event, ....
Also, maybe this is a me thing, but I have had such awful luck trying to get OnIdle to work that I just gave up on it. >.>
I tried to make an app that ran in the system tray and would cover the screen on idle, but I also have RainMeter running and it kept making it flash something horrible. I think cause it triggered all the time. idk, not really the thread for it, just saying.
