From: <jim...@us...> - 2013-03-31 01:41:48
|
Revision: 3116 http://sourceforge.net/p/openlcb/svn/3116 Author: jimkueneman626 Date: 2013-03-31 01:41:45 +0000 (Sun, 31 Mar 2013) Log Message: ----------- Update OLCB Commander Modified Paths: -------------- trunk/scratchpads/jkueneman/Library/olcb_threaded_stack.pas Modified: trunk/scratchpads/jkueneman/Library/olcb_threaded_stack.pas =================================================================== --- trunk/scratchpads/jkueneman/Library/olcb_threaded_stack.pas 2013-03-31 01:41:27 UTC (rev 3115) +++ trunk/scratchpads/jkueneman/Library/olcb_threaded_stack.pas 2013-03-31 01:41:45 UTC (rev 3116) @@ -24,6 +24,8 @@ // HEADER_MEMCONFIG_SPACE_INFO_ACDI_WRITE_USER_REQUEST: TCANByteArray = (DATAGRAM_PROTOCOL_CONFIGURATION, MCP_OP_GET_ADD_SPACE_INFO, MSI_FUNCTIONS, $00, $00, $00, $00, $00); HEADER_MEMCONFIG_SPACE_INFO_UNKNOWN_REQUEST: TCANByteArray = (DATAGRAM_PROTOCOL_CONFIGURATION, MCP_OP_GET_ADD_SPACE_INFO, $00, $00, $00, $00, $00, $00); +var + TaskObjects: DWord; type @@ -102,7 +104,7 @@ procedure Add(Msg: AnsiString); procedure AddDatagramToSend(Datagram: TDatagramSend); procedure AddTask(NewTask: TOlcbTaskBase); - procedure RemoveTasks(RemoveKey: PtrInt); + procedure RemoveAndFreeTasks(RemoveKey: PtrInt); property Connected: Boolean read FConnected write FConnected; property Serial: TBlockSerial read FSerial write FSerial; @@ -646,6 +648,7 @@ constructor TOlcbTaskBase.Create(ASourceAlias, ADestinationAlias: Word; StartAsSending: Boolean); begin inherited Create; + Inc(TaskObjects); FDestinationAlias := ADestinationAlias; FSourceAlias := ASourceAlias; FMessageHelper := TOpenLCBMessageHelper.Create; @@ -660,6 +663,7 @@ destructor TOlcbTaskBase.Destroy; begin + Dec(TaskObjects); FreeAndNil(FMessageHelper); inherited Destroy; end; @@ -988,7 +992,7 @@ end; end; -procedure TComPortThread.RemoveTasks(RemoveKey: PtrInt); +procedure TComPortThread.RemoveAndFreeTasks(RemoveKey: PtrInt); var List: TList; i: Integer; @@ -1000,7 +1004,11 @@ for i := List.Count - 1 downto 0 do begin if (TOlcbTaskBase( List[i]).RemoveKey = RemoveKey) then + begin TOlcbTaskBase( List[i]).ForceTermination := True; + TOlcbTaskBase( List[i]).Free; + List.Delete(i); + end; end; finally OlcbTaskManager.TaskList.UnlockList; @@ -1659,6 +1667,11 @@ end; end; +initialization + TaskObjects := 0; +finalization + + end. - + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |