On 15 September 2011 15:48, Martin Schreiber <mse00...@gmail.com> wrote:
> On Thursday 15 September 2011 16:28:29 Frank Church wrote: > > I have a form with some threaded objects that notify another form of > events > > by calling one of that forms events. > > > > I want to convert to a data module and any interested object to register > > for those notifications. > > > > My idea is for each thread to have some kind of list of procedure types > and > > each interested object registers its routine eg. > > > > This is the data module. It is a rough sketch and may have some syntax > > errors > > > > Type TOneArg = Procedure (Var X : integer); > > > > > type > > > > > > TMonitorObject = class(TThread) > > > private > > > > > > InterestedObjects: TList > > > procedure DispatchOutput; > > > procedure DisplayRawOutput; > > > > > > protected > > > > > > procedure Execute; override; > > > > > > public > > > > > > constructor Create(CreateSuspended: Boolean); > > > RegisterInterest(interestedProc:TOneArg); > > > > > > end; > > > > > > TMonitorObject.RegisterInterest(TOneArg); > > > begin > > > > > > InterestedObjects.Add(interestedProc); > > > > > > end; > > > > > > procedure TMonitorObject.DispatchOutput; > > > begin > > > > > > foreach InterestedObject do > > > > > > InterestedObject.Procedure.Execute; > > > > > > end; > > > > > > constructor TMonitorObject.Create(CreateSuspended: Boolean); > > > begin > > > > > > inherited Create(CreateSuspended); > > > InterestedObjects := TList.Create > > > FCycleComplete := True; > > > > > > end; > > > > Do the procedures for the objects which require notification need to be > > constructed in some way? > > > MSEgui has such a notification mechanism with automatic unlinking by > destroying the objects, see tobjectlinker in > lib/common/kernel/mseclasses.pas. > Another possibility is to use a tobjectevent descendant and > application.postevent. > > > Am I on the right track here? I am particularly interested in what > happens > > when the objects passing the routines are destroyed without the data > module > > knowing about it. > > The program most likely will crash. :-) > > I want to know if my approach is a workable one and what the right syntax should be, handling the destroyed objects I believe I can deal with by checking for the existence of the object before notifying it. Are there some examples of that somewhere? > Martin > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal > -- Frank Church ======================= http://devblog.brahmancreations.com
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal