473,387 Members | 1,749 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

stop thread operations

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,sqlcommand,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 variableisconnected
put the following code inside stopbutton_click
try
{ dataGrid1.DataSource =null; isconnected=false; mythread.Abort();
try
{
if (sqcmd != null)
{ sqcmd.Cancel (); }

if (sqlconn != null)
{ sqlconn.Close(); }
}
catch(Exception)
{return ;}
}

catch (ThreadAbortException)
{
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(IsConnecting == true)
{
try
{
sqlconn.Open ();
myform.sqcmd = new SqlCommand ("sp_search_master",sqlconn);}
sda =new SqlDataAdapter (myform.sqcmd);
dssearch = new DataSet ();
myform.sqcmd.CommandType = CommandType.StoredProcedure ;
myform.sqcmd.Parameters.Add(new SqlParameter("@First_Part",SqlDbType.VarChar)).Val ue = myform.txtname.Text;
myform.sqcmd.CommandTimeout=0;
sda.Fill (dssearch, "igmaster"); myform.dtSource =dssearch.Tables["igmaster"];
IsConnecting = false; myform.statusBarPanel1 .Text =" searchended " ;
myform.sqcmd.Dispose (); sqlconn.Close ();
}
catch
{
MessageBox.Show("connection eror", "Application Error",MessageBoxButtons.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.asp#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>dVVaZpRjbke65E3LDYgTdw==</Id>
Nov 17 '05 #1
1 2223
It is hard to tell by the code fragement but here you go.

Try and remove mythread.Abort from the click event handler and see if
you can get the sqcmd.Cancel() to stop the stored procedure. Run SQL
Profiler before you start your debug session and see if you are
successful. Remeber that when calling sqlcmd.Cancel() you are not
guarenteed that the current command will actually cancel and you will
receive no exception if the call fails.

If the sqcmd.Cancel() succeeds then the sda.Fill(dsSearch, "igmaster")
call in the thread prodedure should return and go into the catch
with an exception and finally return.
If this doesn't help you then try to put all database access code
including your connection and command objects in the scope of the
thread procedure only. Then try andt call just the mythread.Abort in
the click event and see if this works. The logic here is that maybe
with your variables being referenced in two different threads UI and
the background thread you are experiencing some problems with
referencing.
Also for future reference you need to access your UI stuff differently
using the BeginInvoke sytle that was described in the article you
refered to.

For reference look at this series of articles and see if they help.

http://msdn.microsoft.com/library/de...ms06112002.asp
http://msdn.microsoft.com/library/de...ms08162002.asp
http://msdn.microsoft.com/library/de...ms08162002.asp
On Sat, 28 May 2005 09:06:36 -0700, magic man via .NET 247
<an*******@dotnet247.com> wrote:
hi everyone i have a c# application that uses multithreading to connect to sql server and execute a stored procedure on the server. i am using a dataset,sqlcommand,dataadapter and a datagrid to carry out the process on a background thread and everything goes well but the problem arrises when i created a stop button that attempts to cancel the operation of dataset filling(somtimes the query takes much time and i need to cancel the operation)
so that is what i did : 1)created global boolean variable isconnected
put the following code inside stopbutton_click
try
{ dataGrid1.DataSource =null; isconnected=false; mythread.Abort();
try
{
if (sqcmd != null)
{ sqcmd.Cancel (); }

if (sqlconn != null)
{ sqlconn.Close(); }
}
catch(Exception)
{return ;}
}

catch (ThreadAbortException)
{
return;
}
myform.button1 .Enabled =true;
myform.button2 .Enabled =true;

and that is the part of code that fills tha dataset (which is running in the background thread)

bool IsConnecting = true;
while(IsConnecting == true)
{
try
{
sqlconn.Open ();
myform.sqcmd = new SqlCommand ("sp_search_master",sqlconn);}
sda =new SqlDataAdapter (myform.sqcmd);
dssearch = new DataSet ();
myform.sqcmd.CommandType = CommandType.StoredProcedure ;
myform.sqcmd.Parameters.Add(new SqlParameter("@First_Part", SqlDbType.VarChar)).Value = myform.txtname.Text;
myform.sqcmd.CommandTimeout=0;
sda.Fill (dssearch, "igmaster"); myform.dtSource = dssearch.Tables["igmaster"];
IsConnecting = false; myform.statusBarPanel1 .Text =" search ended " ;
myform.sqcmd.Dispose (); sqlconn.Close ();
}
catch
{
MessageBox.Show("connection eror", "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
the problm is that when i press stop button either the application hangs or VS gives me runtime error :unknow error
could u plz tel me a good practise for cancelling the job of dataset filling smoothly without any problems
i have read somthing like that here http://www.codeproject.com/csharp/wo...asp#xx427611xx but in that example there is a loop that checks the state of an event how can also i override the exception peacefully if the 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>dVVaZpRjbke65E3LDYgTdw==</Id>


Nov 17 '05 #2

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

9
by: Harald Armin Massa | last post by:
I need to do some synchronisations like in a cron.job import time from threading import Thread class updater(Thread): def run(self): while True: do_updates() time.sleep(600)
4
by: Prasad | last post by:
Hi, Is it generally acceptable that the SCM says that the service has stopped but the service has spawn a thread which is still doing the cleanup thing which keeps the process running.
4
by: Matthew Groch | last post by:
Hi all, I've got a server that handles a relatively high number of concurrent transactions (on the magnitude of 1000's per second). Client applications establish socket connections with the...
11
by: dee | last post by:
OleDbCommand class like many .NET classes has the following description in its help file: "Thread Safety Any public static (Shared in Visual Basic) members of this type are safe for...
51
by: Hans | last post by:
Hi all, Is there a way that the program that created and started a thread also stops it. (My usage is a time-out). E.g. thread = threading.Thread(target=Loop.testLoop) thread.start() ...
9
by: semedao | last post by:
Hi, I am using sync and async operations on the same socket. generally I want the socket to wait on BeginReceive and to not block the object thread. but in some cases I want to stop the...
6
by: fniles | last post by:
I am using VB.NET 2003 and a socket control to receive and sending data to clients. As I receive data in 1 thread, I put it into an arraylist, and then I remove the data from arraylist and send it...
7
by: Marc Bartsch | last post by:
Hi, I have a background worker in my C# app that makes a synchronous HttpWebRequest.GetResponse() call. The idea is to POST a file to a server on the internet. When I call HttpWebRequest.Abort()...
12
by: Peter K | last post by:
Say I have this class public class Simple { private string name; public string Name { get { return name; } set { name = value; }
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.