Avatar of udir
udir

asked on 

Windows Services....Please need help!!!!

Hi,
I need to do a Service which will read a table lets say at 24:00 every 24hrs, and if a new row has added
(maybe with a date+time field in the table which the service can use in order to compare with the last time the service has read the table?....)  then a message will apear.

I wrote :
    public partial class Service1 : ServiceBase
    {
        public string res;
        OleDbConnection accesscon;
          protected override void OnStart(string[] args)
        {
             string con = @"provider=Microsoft.JET.OLEDB.4.0; data source = C:\Inetpub\wwwroot\Test.mdb";
            OleDbConnection accesscon = new OleDbConnection(con);
            accesscon.Open();
        }
        protected override void OnCustomCommand(int command)
        {
            base.OnCustomCommand(command);
            OleDbCommand maxnumCom = new OleDbCommand("select Max(DateAdd),Max(TimeAdd) from    
                                                                                                                                tblUsers", accesscon);
            maxnumCom.CommandType = CommandType.Text;
             res = Convert.ToString(maxnumCom.ExecuteScalar());
            if (res != null)
            {
                Console.WriteLine("Max Value is:" + res);
            }            
         }
    }

1) nothing happaned!! where should i see the message???(Windows Services is new topic for me)
2) how can i deal with the - "if a new row is added" show a message? (and maybe compare between date and time field??

Thanks in advance...
C#

Avatar of undefined
Last Comment
udir
Avatar of Gautham Janardhan
Gautham Janardhan

i dont think u can directly out put something from a service like that one thing u can do is write to a log file after u run the rewuired function the result and

writing in the OnCustomCommand doesnt work unless someone invokes it

like u write a service which is used by me ...

OnCustomCommand is used so that i can invoke some particulr function in ur service

like
OnCustomCommand(int command)
{
   swithc(command)
   {
        case 1:
           WriteToLog();
          break;
        case 2:
           EraseLog();
          break;
   }
}

for ur case what i  suggest is that u can start a timer in ur onstart and then u can set ur timer interval to what u want and then on the tick of the timer do what u want and write to a log file. remeber to stop the timer before the start of the process and then start it after the process is complete....
Avatar of udir
udir

ASKER

Hi gauthampj,
Thanks again (: for the reply.
so, i'm trying to write as you said to a log file:
----------------------------------------Log Class
    class LogClass
    {
        public void WriteLog(string s)
        {
            StreamWriter sw = new StreamWriter("SendSefach_Log.txt", true);
            sw.WriteLine(s);
            sw.Close();
        }
    }
----------------------The command :
        protected override void OnCustomCommand(int command)
        {
            base.OnCustomCommand(command);
            OleDbCommand maxnumCom = new OleDbCommand("select Max(DateAdd),Max(TimeAdd) from
                                                                                                                           tblUsers", accesscon);
            maxnumCom.CommandType = CommandType.Text;
            res = Convert.ToString(maxnumCom.ExecuteScalar());
              switch(command)
               {
                  case 1:
                      LogClass lc = new LogClass();
                      lc.WriteLog(res);
                      Console.WriteLine("Start Service" + res);
                      break;
                  case 2:
                       break;
               }
        }
------------------------------------------
now, i run setup for the service, and its apear at the Services managments. (I don't run installutil.exe....
because i get an error "service already running", which is true because the setup put it there).
but i can't see any log file.
i don't understand something very basically - when the service starts it must fire the event??
if the answare is yes, where is the log file??
Thanks
Avatar of udir
udir

ASKER

I tried to debug, so i put the line: Debugger.Launch();
it realy gets into the code when i start the service but to the OnStart event and
not to the OnCustomCommand event!   ---  > maybe here is the problem??
How do i call the OnCustomCommand (i meen what is the -  int command ?
what does it gets??
u need to consume the service..

that is call the service from some C# code then only the WriteLog() will fire

to reinstall the service u first have to stop the older one uninstall it using

installutil/u

and then install it
Avatar of udir
udir

ASKER

Hi,
Sorry i didn't understand.
when i want to consume the service, it means i have to call the  - OnCustomCommand(int command).
So what is the 'int command'  which the event gets? (what values the event gets - int command)
when i sya that u consume ur service is that a piece of code in ur c# app that calls this service it will call

OnCustomCommand(100)

for ur purpose u can
do something like this

start a timer in OnStart()
and run the stuff u want in the timer tick like this

tcik
{
StopTimer
//Do Stuff
//Log
//Start Tick
}
Avatar of udir
udir

ASKER

And what is the value - 100?
What integer should i give to every command?
Avatar of udir
udir

ASKER

I meen - how the command event will know that another routine calls her?
Is 100 refers to command event?
ASKER CERTIFIED SOLUTION
Avatar of Gautham Janardhan
Gautham Janardhan

Blurred text
THIS SOLUTION IS ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
Avatar of udir
udir

ASKER

OK,
Thanks a lot  (:
C#
C#

C# is an object-oriented programming language created in conjunction with Microsoft’s .NET framework. Compilation is usually done into the Microsoft Intermediate Language (MSIL), which is then JIT-compiled to native code (and cached) during execution in the Common Language Runtime (CLR).

98K
Questions
--
Followers
--
Top Experts
Get a personalized solution from industry experts
Ask the experts
Read over 600 more reviews

TRUSTED BY

IBM logoIntel logoMicrosoft logoUbisoft logoSAP logo
Qualcomm logoCitrix Systems logoWorkday logoErnst & Young logo
High performer badgeUsers love us badge
LinkedIn logoFacebook logoX logoInstagram logoTikTok logoYouTube logo