Thread active when service is stopping

  • Thread starter Thread starter matteo
  • Start date Start date
M

matteo

Hi everyboby,
i wrote a c# service that every XXX minute launch a working thread on
timer events, something like this:

private void timer_Elapsed ( object status )
{
// Worker thread
System.Threading.ThreadPool.QueueUserWorkItem
( new
System.Threading.WaitCallback( _timer_Elapsed ) );
}

I have a problem when the service is stopping: if the thread is running
(work on SQL db) I MUST wait the end of the thread before stop the
service. Probably i'll have to work on OnStop event, but how? Now my
onStop method only log the service stop.
this is my onstop method:

/// <summary>
/// Stop this service.
/// </summary>
protected override void OnStop()
{
string msg;
string context = "OnStop";

try
{
DumpWorkingParameters( "Service stopped",
context,
IMCleanLogDBLibrary.LogVerbosity.InfoLow,
false );
}
catch ( System.Exception ex )
{
try
{
msg = String.Format( "Service stopping error\r\n{0}",
ex.ToString() );
eventLog.WriteEntry( msg,
System.Diagnostics.EventLogEntryType.Error );
m_TheCleanLogDBmanager.InsertLogRecord(
IMCleanLogDBLibrary.LogVerbosity.Error,
context,
msg );
}
catch {}

}
}

thanks.
Matteo
 
If you create the Thread yourself instead of using the ThreadPool, then
you can set it's "IsBackground" attribute to true. When IsBackground is
true, the created thread dies when the thread that created it dies. To
do this use the following code.

using System.Threading;

Thread someThreadName = new Thread(new
ThreadStart(yourThreadCallBackFunction));
someThreadName.IsBackground = true;
someThreadName.Start();

and in yourThreadCallBackFunction, whatever you name it, you have the
code for your thread to run. Then you can use someThreadName.Abort() to
end your thread, or just let it kill itself when your application
closes.

Let me know if that helps and good luck!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top