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;
}

===================================
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