c# - How to write mutually exclusive methods and Dispose? -
in short -- think of threading.timer , specialized method dispose
taking waithandle
parameter. in case have make 1 step further, have write regular, parameterless, yet awaiting, dispose
.
the story
let's have type foo
implementing such interface:
interface ifoo : idisposable { void action1(); task action2async(); }
the user of type foo
can call action1
, @ same time action2
, @ same time dispose
.
when dispose
called should mark current instance disposed , wait current actions end. should proceed disposing.
regular methods should check if instance disposed , if yes, should silently quit or throw exception -- point should not proceed actual actions.
the idea
i figured out, bool flag , countdownevent
should suffice -- when method called increase counter, on exit decrease it, , when implementing dispose
call wait
-- tell me if methods finished executing.
but here catch, countdownevent
idiposable
, should dispose too, won't able use in methods.
ok, write custom type wrapping countdownevent
, since need memory barrier use readerwriterlockslim
. but... readerwriterlockslim
idisposable
well.
sure, use regular lock
methods calls , dispose call ratio n:1.
question
so how write mutually exclusive methods , dispose?
Comments
Post a Comment