[ 
http://tracker.firebirdsql.org/browse/DNET-171?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jiri Cincura reopened DNET-171:
-------------------------------


Opened for better implementation. Check next comment.

> 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
>             Fix For: 2.5.0 Beta 1, 2.5.0 Beta 2, 2.5.0
>
>
> 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:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Firebird-net-provider mailing list
Firebird-net-provider@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/firebird-net-provider

Reply via email to