I have an application that is using a Thread. At the moment I am creating only one Thread and starting it. Within the
thread I am creating an Excel spreadsheet with the run date stamped on it. This Thread has a System.Timers.Timer in it which
executes the method that creates the Excel file. Whenever the timer elapsed event is fired, I create the Spreadsheet and
then insert into a cell DateTime.NOW. Problem is it seems to return the same time every time it is called! Actually, I believe that DateTime.Now is returning the
time the program was started, not the current tiem. I have tried using a variable to hold the DateTime, I also tried
accessing that variable using the LOCK function but it still returns the same time. Any ideas on why this would occur?
[code]
private void Form1_Load(object sender, EventArgs e) { Thread thrdContract = new Thread(new ThreadStart(StartExcelTimer)); thrdContract.Start(); }
protected void StartExcelTimer() {
tmrC = new System.Timers.Timer(); tmrC.Elapsed += new System.Timers.ElapsedEventHandler(tmr_RunExcel); tmrC.Interval = 200000; tmrC.Enabled = true; tmrC.Start(); }
void tmr_RunExcel(object sender, System.Timers.ElapsedEventArgs e) { ExcelClass ex = new ExcelClass(); ex.CreateExcelDoc();
}
-- Below is the ExcelClass code that is being called
public void CreateAndExportSpreadSheetExcelApp(DataTable dt, string cHeader, ref string cSeedCellAddress, List<XLSColumnProperty> ColList, string cPath, string cRunTm) { try {
-- There is code before this that just creates the Excel file -- Below is the code that is causing a problem
range = oExcelSheet.get_Range(cRng1, cRng1); ******** PROBELM DATETIME CODE********
range.Value2 = "App Version : Version: 1.0, Date: " + DateTime.Now;
range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft; range = oExcelSheet.get_Range(cRng1, cRng2); range.Merge(objbool);
objBook.SaveCopyAs(cPath);
objBooks.Close(); objExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(objBooks); System.Runtime.InteropServices.Marshal.ReleaseComObject(objBook); System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcelSheets); System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcelSheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(objExcel); objBook = null; objBooks = null; objExcel = null;
GC.Collect(); GC.WaitForPendingFinalizers(); } catch { }
[/code]