Implementing IDisposable interface and possibility to stop Socket operations in 
FbRemoteEvent 
----------------------------------------------------------------------------------------------

                 Key: DNET-171
                 URL: http://tracker.firebirdsql.org/browse/DNET-171
             Project: .NET Data provider
          Issue Type: New Feature
          Components: ADO.NET Provider
    Affects Versions: 2.5.0 Alpha 2
            Reporter: Pavel
            Assignee: Jiri Cincura


is it possible to implement an IDisposable pattern for FbRemoteEvent? There are 
a lot of small problems now. For instance:
if you pass an connection object to the FbRemoteEvent constructor there are two 
possibilities
1) you are as owner responsible for destroying this connection object - doesn't 
work for now, if you dispose connection, there is a socket exception, cause 
RemoteEvent still tries to read from already disposed stream
2) FbRemoteEvent should destroy it  - there is no place in code, where 
FbRemoteEvent would manage connection dispose. As i understand, you cannot stop 
it from listening at all. the thread, that is reading responses from server is 
declared "background" and reads until owning window is destroyed (and causes 
bunch of ThreadAbortedException's)

to understand the problem, consider this test case

FbConnection conn1 = new FbConnection("");            
conn1.Open();
revent = new FbRemoteEvent(conn1, new[] { "event" });
revent.RemoteEventCounts += revent_RemoteEventCounts;
revent.QueueEvents();

revent.CancelEvents();
revent.RemoteEventCounts -= revent_RemoteEventCounts;
revent.Connection = null;
//this will cause an socket exception
conn1.Dispose();

Is there any possibility to implement some Stop method (that causes stoppage of 
all socket/thread stuff)  - in my opinion  - CancelEvents might do this work. 
And it would be nice to know, that the same functionality (and also dispose of 
connection) would be done in Dispose method. We can still dispose connection on 
our own, but only if we can stop socket listening (and this must be clearly 
stated in docu).

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Firebird-net-provider mailing list
Firebird-net-provider@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/firebird-net-provider

Reply via email to