I don't know if OracleLob.BeginRead supports asynch operations, but the docn for 
IAsyncResult.CompletedSynchronously says that it can return true "for an asynchronous 
I/O operation if the I/O request was small."  So unless you're actually reading data 
for a relatively large bit of XML, I don't think you can tell whether you're getting 
any advantage from being asynchronous.

At 04:54 AM 3/11/2004, Devrim Baris Acar wrote
>Hi,
>I have some code that reads some xml data from clob columns of an Oracle
>table synchronously.
>However in order to maximize CPU throughput(I guess it will), I changed the
>code to async. version.To my surprise it still works synchronously.
>I have crawled through documentation and read that BeginRead works async
>only if it is supported.
>
>Does OracleLob.BeginRead() support asyncronous operations?
>
>Thanks in advance.
>
>PS.Sorry for those who have read this same message on DOTNET-CLR a couple of
>days ago.But I hada no replies there.
>
>
>Here is the code that works syncronously and in callback shows
>IAsyncResult.CompletedSynchronously as true.
>-----------------------------------
>try
>{
>        OracleConnection conn=ConnectionPool.GetConnection();
>        OracleCommand cmd=conn.CreateCommand();
>        cmd.CommandText="select xml from xmltable where id in (19785,23930,
>4884, 5966, 5918, 7068, 7069, 3072,21615, 6034, 6038, 7071, 7070, 5151)";
>        OracleDataReader reader=null;
>        reader=cmd.ExecuteReader();
>        while(reader.Read())
>        {
>                Console.WriteLine("Bringing...");
>                AsyncCallback readImageCallback = new
>AsyncCallback(ReadInImageCallback);
>                OracleLob NCLOB = reader.GetOracleLob(0);
>                StateObject so=new StateObject();
>                so.lob=NCLOB;
>                so.bytes=new byte[NCLOB.Length * 2];
>
>NCLOB.BeginRead(so.bytes,0,int.Parse((NCLOB.Length*2).ToString()),readImageC
>allback,so);
>        }
>}
>catch(Exception byexc)
>{
>        CustomEvent.ShowException(byexc); }
>-----------------------------------------------
>
>public void ReadInImageCallback(IAsyncResult asyncResult) {
>        StateObject so= (StateObject) asyncResult.AsyncState;
>        Console.WriteLine("Syncly:"+asyncResult.CompletedSynchronously);
>        OracleLob NCLOB=so.lob;
>        nt bytesRead = NCLOB.EndRead(asyncResult);
>        string tablo=Encoding.Unicode.GetString(so.bytes);
>        NCLOB.Close();
>}
>-----------------------------------
>public class StateObject
>{
>        public byte[] bytes;
>        public int imageNum;
>        public OracleLob lob;
>}


J. Merrill / Analytical Software Corp

===================================
This list is hosted by DevelopMentor�  http://www.develop.com
Some .NET courses you may be interested in:

NEW! Guerrilla ASP.NET, 17 May 2004, in Los Angeles
http://www.develop.com/courses/gaspdotnetls

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to