Re[2]: Пардон, видимо не правильно объяснил
От: anton_yp  
Дата: 08.12.03 06:35
Оценка:
Видимо надо было изначально запостить исходник...

[cut]

using System;
using System.Data;
using System.Threading;
using Oracle.DataAccess.Client;
using System.Windows.Forms;
using Oracle.DataAccess.Types;

namespace AsynchTest
{
public delegate DataTable AsyncFillDelegate (OracleCommand cmd);
/// <summary>
/// Summary description for AsynchDataset.
/// </summary>
public class AsynchTest
{
public DataTable AsynchFill (OracleCommand cmd)
{
DataTable tbl = new DataTable("testdatatable");
OracleDataAdapter adap = new OracleDataAdapter (cmd);
OracleConnection con = new OracleConnection ("user id=sysadm;password=oracle;data source=jupiter");
try
{
con.Open();
cmd.Connection = con;
adap.Fill (tbl);
return tbl;
}
catch (Exception e)
{
MessageBox.Show (e.ToString());
return null;
}
finally
{
con.Close ();
}
}

}

public class EntryPoint
{
public static void Main ()
{
AsynchTest at = new AsynchTest();
AsyncFillDelegate dlgt = new AsyncFillDelegate (at.AsynchFill);
IAsyncResult ar = dlgt.BeginInvoke(cmd, new AsyncCallback(CallbackMethod), dlgt2);
}

static void CallbackMethod(IAsyncResult ar)
{
AsyncFillDelegate dlgt = (AsyncFillDelegate)ar.AsyncState;
DataTable tblRet = dlgt.EndInvoke(ar);
}

}
}

[cut]

Т.е. проблема у меня во первых в том, что я пользую BeginInvoke и соответственно, вроде как не получаю в ответ никаких данных о треде.
А вторая проблема в том, что, как видно из кода, программа может подвиснуть на строчке "adap.Fill (tbl)", а это не sleep, оттуда управление так просто не вернется...даже по Thread.Abort.
Хочется понять как прибивать такие команды (видимо что-то типа SuperAbort — т.е. мочим, не глядя

Заранее спасибо, Антон.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.