|
[x]
Posted via EE Mobile
|
||
Search, ask, and monitor your questions on the go with EE Mobile. Visit Experts Exchange from your mobile device and never be out of touch again. |
||
| 03/25/2009 at 05:37AM PDT, ID: 24262892 |
|
[x]
Attachment Details
|
||
|
[x]
The Solution Rating System
|
||
With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.
Your Input Matters If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support. Thank you! |
||
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: |
/// <summary>
/// Run the program
/// </summary>
/// <returns></returns>
private EFeedback doProgramRun()
{
// disply message
DataMonitor.WriteLine("Running the RoToR program...");
// assign threadname
Thread.CurrentThread.Name = ProgramName;
// display thread attributes
DataMonitor.WriteLine("Thread ID for this worker ({0}) is: 0x{1}", Thread.CurrentThread.Name, Convert.ToString(Thread.CurrentThread.ManagedThreadId,16));
// also set this threads priority to maxmimum
Thread.CurrentThread.Priority = ThreadPriority.Highest;
// capture a refernce to this programs worker thread
thisProgramWorkerThread = Thread.CurrentThread;
// increment run counter
ProgramsRun++;
// get program start time
DateTime programStartTime = DateTime.Now;
try
{
// reset complete routines count
this.completedRoutines = 0;
// for each routine in program queue
foreach (IRoToRRoutine currentMethod in this.ProgramQueue)
{
// get the current time
DateTime routineStartTime = DateTime.Now;
// run the method - returning feedback to data monitor
DataMonitor.Monitor(currentMethod.ReturnDelegation().Invoke());
// display how long it took
DataMonitor.WriteLine("Routine took {0}", DateTime.Now - routineStartTime);
// add a line so that routines appear seperate
DataMonitor.InsertConsoleBreak();
// increment completed routines
this.completedRoutines++;
// check for subscribers to event
if (this.RoutineComplete != null)
{
// dispatch event
this.RoutineComplete(new CommunicationEventArgs());
}
}
// if program completed ok
if (!wasCancelled)
{
// display message
DataMonitor.WriteLine("RoToR program complete in {0}", DateTime.Now - programStartTime);
// increment complete counter
ProgramsComplete++;
// return complete
return EFeedback.Complete;
}
else
{
// return abort
return EFeedback.Abort;
}
}
catch (Exception e)
{
// display error
DataMonitor.WriteLine(" -RoToR program error detected: {0}", e.Message);
// increment error counter
ProgramsError++;
// return error
return EFeedback.Error;
}
finally
{
// unsubscribe event handlers - because garbage collector may not collect for a while
this.uninstallEventHandlers();
// always for disposal of worker before garbage collector
this.programWorker.Dispose();
}
}
|
Advertisement