|
namespace TimeoutFunctions.Workers
{
using System;
using System.Collections.Generic;
using System.Threading;
internal class TimeoutWorker : BaseWorker
{
Thread worker = null;
public TimeoutWorker() {
worker = new Thread(this.StartProcess);
}
public override bool Start(DataCarrier dataCarrier) {
// Starting the thread
worker.Start(dataCarrier);
// blocking current thread until worker finishes or timeout detected
bool success = worker.Join(dataCarrier.TimeOut);
if (!success)
ProcessTimeout();
return success;
}
void StartProcess(object userState) {
DataCarrier data = userState as DataCarrier;
WaitCallback methodToExecute = data.MethodToExecute;
base.ExecuteMethod(userState, methodToExecute);
}
void ProcessTimeout() {
worker.Abort();
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Call me Navaneeth Some years ago--never mind how long precisely, I was doing programs with C and C++. When .NET came, I started with C#,ASP.NET and SQL Server.