VS 2008 - Safe Cancellation Of Unknown Threads
Jul 7, 2011
I have got my multi threaded application running which is a Windows Service Project.
Basically when the service starts it starts a thread listening on a port for connections. The reason I started this on a new thread was so I could easily control it and not lock up that main worked thread.
Now on that thread when a client connects it dynamically assigns them another port number that is not currently in use and starts a new thread listening on that port and waits for the client to connect to do the actual data crunching.
So basically I have my main project thread, a Main listening thread then the possiblity of 0 to 100 more threads for each connected client.
Now this project should always be running but in the event it needs to be shut down (or server rebooted etc) I want to be able to shutdown the threads safely.
I can down my main listening thread safely but my trouble is all those other possible threads. What I would like is if the service is called to stop I want any of those other possible running threads which would have an active connection to the client to send a simple command like 'STOP' then close the connection gracefully (MyConnection.Close) and end itself.
The only solution I can think of which I don't really want to do is have a global varible (StopThreads as Boolean) and after each command in the thread check that boolean and if its set to true jump to some code to do what I want and end the thread but there must be an easier way? Or is this the best way?
View 4 Replies
ADVERTISEMENT
May 23, 2011
c# - Does queuing threads impact non-thread safe objects in the same class?
View 1 Replies
May 7, 2009
If I spawn a thread with ThreadPool.QueueUserWorkItem and that thread does not reference the object that is not thread safe, would it compromise that non-thread safe object? By not thread safe object, I mean a third party interface to a programmable logic controller that has no ability to open simultaneous connections or concurrency support.I suppose I just wanted to be sure that by queuing threads in the same class as my reference to that object, I wouldn't somehow be compromising its thread safeness in a way I didn't realize.
View 2 Replies
Aug 26, 2009
I am trying to write a thread safe application that contains 3 threads : -
1 - Data acquisition and decoding
2- Data graphing
3 - FFT and filtering
Thread 1 is collecting bytes from the serial port and converting them int integers (so taking two bytes) after is has captured 64 Bytes and converted into 32 integers, it then needs to pass the array to the graphing thread.
The graphing thread then plots the data and waits for more data.
Thread 3 also waits until thread one has collected 2023 integers and takes these and performs some FFT calculations (which take time).
My question is how do i share the arrays between the three threads without deadlocking the program? as the serial thread will be flying around reasonable fast (1000 bytes per second) so it will synclock onto the shared buffers for most of the time.
Originally i was going to use two synchronised queues, so when thread 1 has collected 32 bytes it queues the data into the graph queue, and once it has collected 2023 it queues the data into the FFT queue.
Then thread 2 and 3 can simple dequeue the data.
However using queues has the overhead of casting the data in and out, and as i know the data type i was planning on using two arrays :-
Dim GraphArray() as ushort
Dim FFTArray() as ushort
Then Thread 1 adds data to each thread, and thread 2 and 3 simple wait until the correct amount of data is available before removing the data. my question is there an array type that allows me to remove x amount of data from an array?
Because i cannot do this easily with the ararys defined as above (GraphArray, FFTArray), as i was planning on making them 1mByte and allowing thread 1 to fill them Knowing they should never overflow and then let thread 2 and 3 remove x amout of bytes at a time unless there is a better way of doing it
View 13 Replies
Dec 8, 2009
I have an application I'm working on that is essentially an Excel workbook generator (special input files for our wireshop machinery). Therefore, it's process is lengthy.
Is it possible to build a Cancel feature while it is looping through its collections to process these files?
If so, would I need to implement multi-threading?
View 15 Replies
Apr 11, 2010
While I print or preview a large bitmap, VB.NET show a small window with a cancel button.
I do I detect that the CANCEL button was pressed, so I can abort my PrintPage event before the current page is completely rendered?
View 5 Replies
Oct 22, 2009
Using Access 2003 and VB code, I have created a form with a number of labels. The labels will display an employee's names. I have named the labels name1, name2, name3...etc. Using an ADO data set and DCount I have determined the number of names in an Access table (the number of names can vary). What I want to do is for each record in succession to pick the first name and surname from the data set , combine them into a full name (this part has been successful), and then set the full name into the label caption in succession. Example: full name 1 into name1, full name 2 into name2, full name 3 into name3... until all names appear as labels on the form.
I created a counter to and a variable to increment the label number but when I address the caption property of the variable containing the new label (e.g. name1, name2..etc.) it throws an errer at runtime. Here is the code:
[Code]....
View 8 Replies
Jun 10, 2011
I have made a project on offline railway reservation ticket and cancellation and management wel i have included following things: form wise
1}welcome page (containing news , updates about the software )
2}registration n login page
3}main menu (Containing links to all tools and services i included in software)
4}ticket regestration (fare calculation and deduction and special discounts included)
5}ticket cancelation
6}PNR CHECK
7}FEED back form
9}Splash Screen
10}Rules n policies ,refund rules
11}Gerneral information
12}RTI act
13}Railway Map
15}Service area Covered
16}Train Halt Stations , total Halts per train according to Journey and distance Stations Between Journey
17)Trains and stations Codes
18}Train Arrival and Departure Timings
Thats It, Full database on Ms Access ..and Text Strings.Now Is this enough Or shall i Do add some thing More ... if u think its incomplete Plz suggest Some topic that i can add to This project.
View 4 Replies
Sep 5, 2009
On the MSDN docs for the generic List(Of T) class, it says this:
Quote:
Public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.but I'm trying to work out what exactly that means or why it matters. Does that mean that if I had this:
vb.net
Public Shared MyList As New List(Of MyClass)
then I could enumerate through that list from several threads at once without there being a problem? I thought you could read from any object from multiple threads without a problem anyway... I thought it was only if there were potentially other threads modifying that object at the same time that there were problems. Particularly with a collection like a List because you cant modify a list while another thread is enumerating the items in the list as you get an exception thrown stating that the collection has changed. I think basically what I am asking is if the MSDN doc said that a public shared list wasnt thread safe then what difference would it make?
View 5 Replies
Oct 19, 2011
I just had a new, last-minute idea on to take on a task, so I am running to StackExchange for quick help.
What I want to do is execute a series of methods right in a row, each in their own threads. I want the application to wait until all of these threads are completed, after which the program will resume. It also has to use managed threading (thread pool).
What quick examples could you provide to help me along the way? If it's too complex, what things should I know about so that I can Google it on my own?
View 1 Replies
Dec 30, 2009
I have a main thread which is designed to be a batch processor - it spawns a series of 'child' threads from a loop (which can vary in terms of the no of items) - see below
[Code]...
However, each of the 'child' threads could take anywhere from milliseconds to about a minute to process - depending on the complexity of each calculation. There may also be a large number of child threads - e.g 100s. Creating large numbers of child threads is not efficient. I therefore want some way to effectively queue each child thread (and cancel if the process is taking too long to complete). Autoevents seems like one way of doing this, but the only examples I can find seem to assume there are two different processes on seperate threads, not one process being repeated.
View 4 Replies
Dec 13, 2009
if people wanted to sign up for a email sender they can enter there email into my form i created with VB and it would send that info to my email... well it turns out that they could get my password and i then got my email password hacked... how is this possible is it because i did not encrypt my form and they decrypted my form to get my email and password info? please tell me how this is done so i can be safer next time
View 3 Replies
Mar 20, 2009
I have a Visual Basic project in Visual Studio 2008. Do I need to keep the .RESX file that seem to be associated with each of my forms?
View 2 Replies
Mar 13, 2012
Imports System.Threading.Thread
Imports System
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.demoThread = New Thread(New ThreadStart(AddressOf Me.ThreadProcSafe))
[code]....
I've been trying to use Microsofts example on their MSDN but I'm getting this error. :
Error1'demoThread' is not a member of 'WindowsApplication1.Form1'.C:UsersAydinAppDataLocalTemporary ProjectsWindowsApplication1Form1.vb89WindowsApplication1
View 20 Replies
Aug 26, 2009
I am using WCF to make a chat application - I dont think the fact I'm using WCF is relevant for this particular question but just thought I would mention it in case there is something special about the way WCF does threading that I dont know about.So I have my WCF service that runs on a server and a WPF app that acts as the WCF client - each time a new client signs in or out it updates the server WCF service to let it know that it has changed status. The server then updates a list to either add or remove the user, so this list basically represents who is online at any one time. The list is declared in the core server class like so:
vb.net
Private Shared List(Of ChatUser)
So, I have a method in my server side that is called whenever a user needs to be added to this list and originally I thought I could have some issues because while the server might be looping through this list to find out who is online, another user might have signed out and the list would therefore be modified while the server was looping through it which would cause an exception. So I added the following to the start of the method that removes a user from the list:
vb.net
SyncLock New Object
and I havent had any problems... but I'm still not totally convinced that this will completely solve the issue. So would creating a Property give me a bit of extra safety? Assuming I always used the property to access the list in my code.
Like this:
vb.net
Private Shared Property CurrentClientList() As List(Of ChatUser)
Get
SyncLock New Object
[code].....
Also, am I actually using SyncLock correctly? I mean should I be referring to a shared object that all of the threads can access rather than just doing New Object each time or does it not make a difference?
View 9 Replies
Jul 27, 2009
i have created this programme which is basically a keep safe programme, well it's not created yet anyway.so far i have coded the the log in page, so the user can log in with their email and password.Once they do it comes to a screen asking if they want to visit their 'keep safe' items, or, asking if they want to deposit a file in their 'keep safe'.This is the programme belowThe Reason It say's JMEsseneger, is because i had other plans for the login until i came to face the fact, that im not quite fluant enough in this language to understand it all
1) As soon as they hit 'sign in' it creates a passworded.zip folder somewhere on their computer (using the same password they enterd to login and would only create the file if login is successful)2)The "Open SafeBox" obviously opens the file directory 3)the "Add To SafeBox" will allower the user to browes their computer for a file that they want to add into the "safebox" with a simple select and a click of an "add" button
View 10 Replies
May 27, 2010
i got a background worker that has the following code in the do work.... one of the things i want to do is to add rows if theres none available ...but i got an error saying i need to do a safe call thread...i already read about it but im stuck i put control.invoke, but that gives me an error too saying Error1Reference to a non-shared member requires an object reference.what can i do to add rows safely?
vb.net
Private Sub BackgroundWorker2_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker2.DoWork
If DataGridView2.Rows.Item(num).Cells.Item(0).Value = "" Then
Control.Invoke(DataGridView2.Rows.Add(1))
View 6 Replies
Oct 25, 2009
Is it possible to prevent my program from being ran in Safe Mode and System Restored?
View 5 Replies
Apr 25, 2012
is it possible to declare a new instance of a class using a name contained in another varible which is unknown?
For Instance....
Dim Clients() As String
Then say two clients are connected that array may contain the following:
Clients(0) = Client1245
Clients(1) = Client4856
I now need to create an instance of my class 'clsClient' for each client connecting so my thought was to declare it using the clients unique name/number. I know this isnt valid code but as an example
Dim clients(0) as New clsClient
So I would then have an instance of clsClient called Client1245 and if I had a routine in clsclient called for instance StartClient() i could then do
Client1245.StartClient()
Yes I know the code isnt valid but I think it gets across what I am trying to do and hopefully one of you smartass's will be able to instruct me on what I am trying to do and hopefully not too complex :-)
View 8 Replies
Nov 25, 2011
I'm using a background worker to in an Excel VSTO application to throw up a progress dialog box with a status bar and a cancel button to escape from long running calculations. It's working really well, except for one issue. I'd like to use a Modal Dialog, so that the UI behind the dialog gets locked up, instead of a Modeless Dialog. If I use .ShowDialog() instead of .Show(), everything is great until you hit the Cancel button on the form. Following things in the debugger, the cancellation happens, it just takes somewhere in range of 30 seconds. If I use .Show() on my form, then the cancellation occurs immediately as it should.
[Code]...
View 2 Replies
Mar 7, 2011
How can I get some random unknown data off a website.It's a score on a hiscores.How can I do this?
View 7 Replies
Jul 30, 2009
i recently made a web browser in visual basic express edition 2008 for my family computer use purposes only. Id like to make sure that using my web browser and entering personal information on it will be safe. How can i make it safe and secure? Additionally i was wondering if id have to develop my own addons or if its compatible with Firefox addons.
View 1 Replies
Jan 1, 2012
1.prompt a text string in 0 to 20 characters and then pass it as a input parameter to a Boolean-valued Function to check if the string is symmetric or not. Display the result.
2.The Einstein's equation E=mc2 relates three variables, E, m, and c. create four TextBoxes, two for the names of variables (E, m, c) and the other two for the values of corresponding variables. Based on the entered names and values, calculate and display the unknown variable in another TextBox.
View 4 Replies
Sep 8, 2009
System.ExecutionEngineException was unhandled Message: An unhandled exception of type 'System.ExecutionEngineException' occurred in Unknown Module.There are no further details and the stack trace window is blank I was just wondering how it would be best to work out where this error message is happening - i really don't want to put a million debug.prints in there to work out what functions were last called etc.
View 2 Replies
Jul 28, 2010
I'm testing here something, but i don't know what's the best way to do this.I have a var that tells the application the number of threads that will be started, inside the thread/function that i call i need to return/get two values i have two sub functions, each one returns an integer.Then in the end i need to sum the values.
Example:
Thread1/Function
SF1 - Returns 2
SF2 - Returns 3
Thread2/Function
SF1 - Returns 1
SF2 - Returns 5
After all threads are over, i get the
SF1Total = 2 + 1 and
SF2Total = 3 + 5.
I'm thinking in using shared vars, and inside the function/subfunctions update the values. It's this a correct way to do it? Other question, the threads are assync, but i need to know when the last one finishes. How do i control this? The order they finish doesn't need to be the order they were called....
View 4 Replies
Mar 3, 2010
I have a process that may take a while, so I decided to put it into a thread and adding some GUI (progress bar) to calm the users down while it's working in the background.The thread itself is working properly.The problem is that the cursor, which I wrapped with a 'sandglass' before using the thread ("Me.Cursor = Cursors.WaitCursor"), has stopped working, and I can't figure out why. When I debug, it's getting inside the function and relevant line - but ignore and do not change the cursor.
Attached is the code, before and after:
Before - working properly:
Private Sub PictureBox1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGetReport.Click
Me.Cursor = Cursors.WaitCursor
If IsValidatedFields() Then
[code]...
View 3 Replies
Sep 21, 2011
VB CODE
Private Sub pstart()
Dim i As Integer
[code].....
View 5 Replies
Apr 9, 2010
I need to 'download' the contents of an XML file that resides on some web address and parse them. I need to do this about once every 5 seconds. I use a HttpWebRequest to do it, but I don't think that's relevant.The 'problem' is that this request + parsing can take a little bit of time, and even more time if internet is a little bit slow. So, I decided to do it in a background thread.I have a method, let's call it GetXmlInfo(), which does all the hard work. Then, I have a timer that ticks every 5 seconds. Now I have two options for starting the thread.Option 1: creating a new Thread object every time the timer ticks:
vb.net
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick Dim t As New Thread(AddressOf GetXmlInfo) t.Start()End Sub
[code].....
In option 2, when the GetXmlInfo method has not finished yet, no new thread will be created and the GetXmlInfo is 'skipped' for one timer tick (or possibly more). Could this create a sort of "deadlock" (I know it's not really a deadlock), like if the thread never finishes for some reason?
View 4 Replies
Jun 5, 2009
I would like some advice on multi-threading. I currently utilize two threads, one for the GUI, and the other for calculations. This works well, but I want to improve my multi-threading techniques. Currently the data is with the calculation thread, and this occasionally this will cause a slow down. I want to put the data on its own thread. Giving me three threads, Data, UI, and Calculations. This should improve responsiveness, and not be overwhelmingly complex.
My problem is, this no longer fits into the parent child relationship well. All three threads need to interact with each other. My question is, what is the better way of dealing with more than two threads, when all the threads need to interact with each other. Should I pick one thread as the ultimate parent, say the data thread (I pick this one, because it seems to me this thread will be the most free.) Then have the calculation thread and the UI thread children of the data thread. Then when I have a need for the UI thread to explicitly call the calculation thread, I do this through a function in the data thread.
View 2 Replies
Jul 29, 2010
In the same line of this thread Now i have a problem with the control of the ending threads. This is my
vb.net threadsEnded = 0 For j As Integer = 0 To numThreads - 1
[Code]...
Some times the application doesn't finish and if i pause the application i see that the threadEnded var doesn't have the correct value, seems like some thread doesn't update the value of the var.
View 5 Replies