Design Question
-
I am writing a console program that will go to a database at certian intervals. Basically, I am trying to implement an automated email system for expired records. My question comes when trying to decide between using a Timer or just have the program use Sleep(). So I want the program to check the database every x number of minutes (probally every hour) and see if anything needs to be sent. My restrictions are that it has to be able to run on win98 and higher. Any suggestions. Right now I am leaning toward Sleep(), but I am not sure if that is a viable business app solution. Thanks in advance, *********************** Tony Fontenot Recreational Solutions tony@recsolutions.com ***********************
-
I am writing a console program that will go to a database at certian intervals. Basically, I am trying to implement an automated email system for expired records. My question comes when trying to decide between using a Timer or just have the program use Sleep(). So I want the program to check the database every x number of minutes (probally every hour) and see if anything needs to be sent. My restrictions are that it has to be able to run on win98 and higher. Any suggestions. Right now I am leaning toward Sleep(), but I am not sure if that is a viable business app solution. Thanks in advance, *********************** Tony Fontenot Recreational Solutions tony@recsolutions.com ***********************
If you are depending on executing something every minute, I would not rely on Sleep() since you don't know how long your database queries will take (unless you do some math to calculate the remaining sleep time, but still there are some things to consider). The query time might differ from call to call. If that minute is allowed to be fuzzy, then, a Sleep() might be the way to go. Consider how you want the program to behave if a database query takes over (or about) a minute. Consider that timers are system resources, and there might be none available at times. Hmmm... well, can't think of anything more for the moment.
-
I am writing a console program that will go to a database at certian intervals. Basically, I am trying to implement an automated email system for expired records. My question comes when trying to decide between using a Timer or just have the program use Sleep(). So I want the program to check the database every x number of minutes (probally every hour) and see if anything needs to be sent. My restrictions are that it has to be able to run on win98 and higher. Any suggestions. Right now I am leaning toward Sleep(), but I am not sure if that is a viable business app solution. Thanks in advance, *********************** Tony Fontenot Recreational Solutions tony@recsolutions.com ***********************
I would use a waitable timer. Because it will block your program while you are waiting, but if you expand your program in the future, you will have the ability to wake that thread up before the timer expires. With Sleep, your program will block for the same amount of time and this cannot be changed at runtime. Here is an example from MSDN of how to use a waitable timer.
#include #include int main()
{
HANDLE hTimer = NULL;
LARGE_INTEGER liDueTime;liDueTime.QuadPart=-100000000; // Create a waitable timer. hTimer = CreateWaitableTimer(NULL, TRUE, "WaitableTimer"); if (!hTimer) { printf("CreateWaitableTimer failed (%d)\\n", GetLastError()); return 1; } printf("Waiting for 10 seconds...\\n"); // Set a timer to wait for 10 seconds. if (!SetWaitableTimer( hTimer, &liDueTime, 0, NULL, NULL, 0)) { printf("SetWaitableTimer failed (%d)\\n", GetLastError()); return 2; } // Wait for the timer. if (WaitForSingleObject(hTimer, INFINITE) != WAIT\_OBJECT\_0) printf("WaitForSingleObject failed (%d)\\n", GetLastError()); else printf("Timer was signaled.\\n"); return 0;
}
Build a man a fire, and he will be warm for a day
Light a man on fire, and he will be warm for the rest of his life!