hi everyone i have a c# application that uses multithreading toconnect to sql server and execute a stored procedure on theserver. i am using a dataset,sqlcomm and,dataadapter and adatagrid to carry out the process on a background thread andeverything goes well but the problem arrises when i created astop button that attempts to cancel the operation of datasetfilling( somtimes the query takes much time and i need to cancelthe operation)
so that is what i did : 1)created global boolean variableisconne cted
put the following code inside stopbutton_clic k
try
{ dataGrid1.DataS ource =null; isconnected=fal se; mythread.Abort( );
try
{
if (sqcmd != null)
{ sqcmd.Cancel (); }
if (sqlconn != null)
{ sqlconn.Close() ; }
}
catch(Exception )
{return ;}
}
catch (ThreadAbortExc eption)
{
return;
}
myform.button1 .Enabled =true;
myform.button2 .Enabled =true;
and that is the part of code that fills tha dataset (which isrunning in the background thread)
bool IsConnecting = true;
while(IsConnect ing == true)
{
try
{
sqlconn.Open ();
myform.sqcmd = new SqlCommand ("sp_search_mas ter",sqlconn); }
sda =new SqlDataAdapter (myform.sqcmd);
dssearch = new DataSet ();
myform.sqcmd.Co mmandType = CommandType.Sto redProcedure ;
myform.sqcmd.Pa rameters.Add(ne w SqlParameter("@ First_Part",Sql DbType.VarChar) ).Value = myform.txtname. Text;
myform.sqcmd.Co mmandTimeout=0;
sda.Fill (dssearch, "igmaster") ; myform.dtSource =dssearch.Table s["igmaster"];
IsConnecting = false; myform.statusBa rPanel1 .Text =" searchended " ;
myform.sqcmd.Di spose (); sqlconn.Close ();
}
catch
{
MessageBox.Show ("connection eror", "Applicatio n Error",MessageB oxButtons.OK, MessageBoxIcon. Error);
return;
}
the problm is that when i press stop button either theapplication hangs or VS gives me runtime error :unknow error
could u plz tel me a good practise for cancelling the job ofdataset filling smoothly without any problems
i have read somthing like that herehttp://www.codeproject .com/csharp/workerthread.as p#xx427611xxbut in that example there is a loop that checks the state of anevent how can also i override the exception peacefully ifthe button is pressed thans for ur time i am waiting ur help
--------------------------------
From: magic man
-----------------------
Posted by a user from .NET 247 (http://www.dotnet247.com/)
<Id>dVVaZpRjbke 65E3LDYgTdw==</Id>