public override void Initialize() { try { CloseAndFreeUpResources(); } catch { } try { DCUServer = new clsDCUserver(); DCUServer.TaskError += new __clsDCUserver_TaskErrorEventHandler(DCUServer_TaskError); DCUServer.ShowWindow(1); //DCUServer.TaskMessage += new __clsDCUserver_TaskMessageEventHandler(DCUServer_TaskMessage); //DCUServer.TaskWarning += new __clsDCUserver_TaskWarningEventHandler(DCUServer_TaskWarning); //DCUServer.TaskEnd += new __clsDCUserver_TaskEndEventHandler(DCUServer_TaskEnd); int MStoHold = LoadUpSecondsWait*1000; Thread.Sleep(MStoHold); int i = 1; while (i < 15) { DCUServer.ClearPort((short)i); i++; } StatusOK = true; } catch { StatusOK=false; throw new InstrumentError("Could not initialize transfer station", false, this); } }
public override bool CloseAndFreeUpResources() { StatusOK = false; if (DCUServer != null) { try { int i = 1; while (i < 15) { DCUServer.ClearPort((short)i); i++; } } catch { } try { System.Runtime.InteropServices.Marshal.FinalReleaseComObject(DCUServer); } catch { } DCUServer = null; } //GC.Collect(); //next part should always fail, process should be out by now, and thus not forceably killed string[] ToKill = { "Device Control Unit", "DCU" }; foreach (string str in ToKill) { KillProcessAttempt(str); } return true; }