Running All Threads Not On The GUI Thread?
Dec 7, 2011
I have only managed to use an STA to run a long running excel process with a background worker and 2 delegates.
What I want to do now is have the whole application running outside of the main thread to make sure the UI is always available, I then want to create new threads from the thread I have outside of the main to run the various processes. I will need to have some form of syncronisation in there for certain things to be done once a thread is completed and also I will need to change the button states on the main form to stop certain process being called whilst other processes are running.
This is my code so far, basically this loads in a csv file to a datatable adding manager employee ID and email address, filters it and displays the resultant data in a listview. There eventually will be some filter options as well. There are then 2 options for processing the data, it will produce individual bradford factor reports and email them to each manager or will produce a summary spreadsheet that is sent to HR.
Currently because there are around 8000 lines of data, it was the summary option that required the background worker as a long running process time out error was occuring whilst in the main.
What it does is write the data from the list view to an excel sheet and colour co-ordinates the summary rows according to the absense policy. It then copied bottom to top, the summary value the next blank column against all the lines for that individual and then uses this column to decide which sheet to move the row to, copying the row to the new sheet then deleting it from the master list and shifting the cells up.
This works well, but the process of loading the data in to the list view locks up the main thread where it currently runs. I also wanted to make this slightly more complicate as far as threading is concerned, as more of a learning curve than a practical application of the function.
Here is my code so far: [URL]
View 10 Replies
ADVERTISEMENT
May 19, 2012
I have several threads in my WinForm and I am running them via Thread.Pool, what I need to know is that how can I run them sequentially.
example:
Thread1 => me.label1.text = "Thread1"
Thread2 => me.label2.text = "Thread2"
Thread3 => me.label3.text = "Thread3"
In my Form_Load event, I have a line as follows:
[Code]...
View 8 Replies
Sep 2, 2010
My understanding is that thread.join will suspend the execution of code on the calling thread until the spawned thread finishes or is aborted...
With that in mind, I tried this:
For i = 1 to 50
threads = New Thread(AddressOf test)
threads.IsBackground = True
threads.SetApartmentState(ApartmentState.STA)
[CODE]...
However, the rest of the code runs when the loop finishes, not waiting for all the spawned threads to finish. Since the rest of the code needs the threads to finish (otherwise the rest will error).
View 4 Replies
Dec 23, 2009
Say I have a code with 3 methods that do some pretty intensive work. Would executing these methods on 3 seperate threads be faster then executing them one after the other on a single core cpu? And what if it's a dual core or HT?
View 8 Replies
Jan 14, 2011
I have on timer thread that needs to pass every time a different data to another running thread to make the calculations.
View 5 Replies
Jan 3, 2010
Trouble finding 1 thread out of the 3568 threads I have in my history.In the one I'm looking for I wrote an Extension Method called Shape , I think.
The code could change the Shape of any Control and I think I added similar code for any FORM in the same thread but not for User Controls.
Does anyone remember roughly what year and month it was?
It might save me hunting through my past threads.
[Code]...
View 4 Replies
Dec 5, 2010
In my application I have a loop that makes calls to a website to download data. I'm using a DownloadDataAsynch call with a handler.
I'm making many such calls in a loop. What I'd like to do is, if I have more than a certain number of replies pending, I should pause the loop and let the data handlers run.
How do I do that?
CODE:
View 14 Replies
Sep 22, 2009
I've been reading up on multi-threading and just have a couple trivia questions that are ambiguous given my sources:
1) What is the max number of threads in the thread pool? The number 25 is used but I have on reference that says 25 per CPU and another that says 25 per core. I realize that both can be right but before I start making flagrant design decisions I'd like some validation.
2) Let's say I'm in the body of a delegate and I call a function or sub. Does that function/sub remain in the thread or does it revert to the parent thread? I'm guessing the former would be much easier to implement so that's probably what MS did but you just can never tell.
View 10 Replies
Sep 3, 2009
Does anyone have a 1 to n thread example in which n threads are created dynamically? There are a number of examples that show a definite number of threads, and some that imply n threads by using a tcp ip listener or a file system listener. However, I'm looking for a 1 to n created in response to a dynamic requirements, provided purely by and for my program.Essentially, my requirement is to be scalable. 1 to n threads based on application throughput should make this pretty easy to satisfy.
View 9 Replies
Dec 12, 2010
I'm working with vb.net 3.5SP1 /VS2008. I'm familiar with windows threads from C++ but I didn't do it since the 90s.I have 5 threadpool calls (ThreadPool.QueueUserWorkItem) that do some complex work (they read info from different web pages, regular expressions, etc) and each updates different columns in a data-grid view. They pause for 1 second between each web read with thread.sleep (not to overload the server). My issue is that some of the threads do not complete. I get for example 3 results when I should have 8. Sometimes it works fine. This is an older 3.0Ghz HT machine, I want to test it on the lowest common denominator(and that is all I have ). I tried using Monitor.Enter(ListView1)it seems to help but it is hard to tell. I tried using the thread debug window but it is not really helpful, it seems do disappear during execution. If I remove the threads I always get my data. I'm wondering if something is being blocked? Is there a way to debug this?
Also, does thread.sleep(x) stop all threads or just the thread that the statement is executed in?
View 4 Replies
Jun 15, 2012
I have a thread pool that send file using ftp protocol. I encapsulated the call for threadpoll with try catch believing that the thrown exception inside the threadpool will be catch by the main thread. Instead the system terminate whenever i throw an exception from inside the threadpool. Also I design the Clsftp.ftpsend class to throw an exception related to ftp error. Basically my design for handling the error is just like the code below.
'Main thread
Private Sub BttnStartSending_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BttnStartSending.Click
try
Dim objparam As New ThreadParameter
[code]....
View 7 Replies
Feb 15, 2010
I have need of either enumerating all the managed threads in a application or listen to when a new thread is created. I can not find anyway to do this through searching the web. It strikes me as odd the the IDE can list all the manage threads, but I can't.
If this is not possible, is there clarification as to why this is not possible.
I need to create a shared class in a DLL that will when it receives a signal will stop all the threads currently running, and gracefully exit the application.
View 3 Replies
Oct 15, 2009
What is the best way to pass objects between threads? I would like to create a new thread that creates a new object : Dim myobject as newobject = new newoject Then in my main thread, I would like to use myobject. Ideally I would like to just assign to a global variable but I don't think that is possible. I think I may have to use some form of delegate function (but I think the child thread would need to complete to use a callback). The new thread will not actually end before I need the object reference in the main thread. How should I go about this?
View 2 Replies
Dec 9, 2009
I have two forms running in the same application but on different threads. HdForm and DataForm. I have a class library whit datasets and a stack in it. Cause both forms (different threads try to rad from the same class library i use a synclock to syncronize. But it seems like the synclock dont work.I get random errors in the HdForm while reading from myAr dataset. It says index out of range. But i know for sure that the index exist (i have make sure of that). When i click on the visual studio play button then, it goes again.If the index was realy out of range then it couldn't go further. So i think the synclock does not work and thus the dataset is changed in time while im the loop reading from MyAr.
[Code]...
View 3 Replies
Nov 21, 2006
I want to have three classes running three simoultaineous threads. I have started out with one class that looks like this:
Imports System.ThreadingPublic Class C_EventCollector Dim oThread As Thread Public Sub New() oThread = New Thread(AddressOf Me.BackgroundProcess) End Sub Private Sub BackgroundProcess() Console.WriteLine(Now.ToString) oThread.Sleep(10000) End SubEnd Class
What I want is execute BackgroundProcess() every tenth second. For testing purpose I print out current date and time to the console. Using this thread BackgroundProcess() only executes once.
View 1 Replies
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
Oct 2, 2010
In the past few weeks, to speed up our database freshening process, I've created a couple of extra programs, basically copies of the exe file. The program itself, accesses web pages, images etc and uses threads to do so. The second program uses LIMIT 300,100 and the third LIMIT 600,100, to make sure they don't work on the same records.
Before the last few weeks, one occurrence of the program used to run without problem, from the task scheduler all through the day. Only one occurrence of each exe can run at a time.Since theres now three programs running, .net 2.0, on xp, the program often seems to get stuck and never ends. I have to kill it from task manager.
It runs fine in the IDE I just wonder if there would be any benefit from upgrading to vb.net 2010 ?
View 1 Replies
Apr 17, 2010
How to I run multiple threads in VB.NET? Say I need 2 threads - one that prints 100 numbers in a loop and the second one that asks for the user's name and prints it inside a message box.
View 1 Replies
Jan 13, 2012
I have a sub-procedure which I want to run a different process, depending on what is currently running. I thought the easiest way to do this was by using an ArrayList of each of the campaign details & adding an 'Inuse' field to check to see if the Inuse field is set to 0 or 1. The problem that I have is that when running the process it is all happening at once & the integer hasn't been changed before the next thread kicks in so my threads are running the same campaigns. I tried to avoid the problem by adding a Thread.Sleep(100) delay inbetween starting threads but this led to exactly the same problem.
Here's an example of what I am trying to do:
Imports System.Threading
Public Class Form1
Private Campaigns As New ArrayList
Private ProcessRunning As Boolean = False
Friend StopProcess As Boolean = False
[Code] .....
View 2 Replies
Apr 29, 2010
I just made a rapid file transfer form for my photos.In which I drag photos into a listview with my destination folder set.I assign each individual file transfer to a new thread. This works very fast as compared to the standard drag n' drop.
View 2 Replies
May 6, 2009
I'm writing a scripter using VBScript, that should be able to execute multiple scripts at same time, running on own threads.
The issue is, I DO start those scripts on different threads, but their sleeps still seem to affect the other threads too.
For example, let's say I start 2 scripts
In the Main event
NewScript1
NewScript2
[code]....
View 1 Replies
Apr 15, 2009
I have an application, running multiple threads, and in many of these threads, Outlook is being called, some mails read, attachments downloaded, and then the outlook instance closed. But it is possible that there are a number of threads trying to do the same thing at the same time. There is of course a lock at the beginning and end of the process, so that no two threads try to access the outlook application at the same time.
"Sometimes" i get an error message : Creating an instance of the COM component with CLSID {0006F03A-0000-0000-C000-000000000046} from the IClassFactory failed due to the following error: 80010108
View 3 Replies
Mar 5, 2009
I want to start a job in a new thread or using backgroundworker to do it but havent done that before and asking you wich way I should do it. My program has a datagridview with a list of files, one file per row. I want the user to be able to select a row and then press "Start download" to start a background job of the download. I want to get events back of the progress of the download.
I have a class clsDownload that handles everything and raises events back but how do I implement the backgroundworking?Should I use the System.ComponentModel.BackgroundWorker inside of the class or create some wrapper that handles this or use some other threading stuff?
Edit: I dont understand how to implement my download in the backgroundworker, any small example would be very nice. The example on msdn didnt get me far.I have a download class that has a StartDownload-function. Should I use the backgroundworker IN the class or in the caller? "feeling stupid"
View 5 Replies
Apr 28, 2012
what i currently have is the main form that then when a user presses a button it runs some functions that loops through some files and changes them and then copys them to another location the functions can take quite some time. what i want to is when the button is pressed it opens another form with a textbox on it and when it has finished 1 cycle of the loop is outputs a line to the textbox and tells the user weather or not it has been sucsessfull.
at the moment i have:
Dim t As Threading.Thread
t = New Threading.Thread(AddressOf Form3.Show)
t.Start()
[Code]....
View 1 Replies
Dec 3, 2009
I have a webservice with a webmethod that accepts an XML from a client via POST (don't know if this really matters), validates XML and the data inside, and then processes the XML and returns an answer to the client.At moment, I have a problem with large XMLs; it takes too long for the XML preprocessing to finish, and the clients timeout expires.Instead of increasing the timeout of the client I thought I could maybe separate the XML validation from the XML processing by starting a new thread after the validation which processes the XML and at the same time return the validation answer to the client. (the processi
View 10 Replies
Jan 2, 2012
I am using the BackgroundWorker to do the heavy tasks so the UI thread doesn't get blocked. While the BackgroundWorker can send values to the UI thread using the progress-scheme, how can the BackgroundWorker get some values FROM the UI thread?
Either by asking it or simply by the UI thread sending some values to the BackgroundWorker?
Just accessing a variable of the UI thread like UIForm.x within the BackgroundWorker does not work, it does not seem to have access to the UI variables?
View 1 Replies
Feb 1, 2011
Is there a way in .NET (VB.NET or C#), when an exception happens, to dump the stacktrace of each thread? Basically I would like to reproduce what happens in Visual Studio's Debug->Threads window to see what each thread was doing when the exception happened
View 2 Replies
May 25, 2011
I have the following code running in a thread to enumerate the local machines in the active directory. This takes some time to complete (about 5-10 seconds) so if the user quits the application before the enum is complete the application takes 5-10 seconds to quit. I tried thread.abort but because it is waiting for For Each SubChildEntry In SubParentEntry.Children to complete it doesn't abort until this returns.
Dim childEntry As DirectoryEntry = Nothing
Dim ParentEntry As New DirectoryEntry
ParentEntry.Path = "WinNT:"
[code].....
View 2 Replies
Sep 6, 2011
I have form1 and form2. A button on Form1 calls a thread background process (below). That process processes the command and when its done should close form2. I'm opening form2 within the current thread but trying to close it in the background thread. This is because if i close it in the current thread it closes immediately. I included the 2 functions below and what I have tried in the inline comments. Form2 is a simple form, basically just an animated gif. It is to show the user that something is happening(like a status bar) then close when its complete. I tried running different priorities instead of different threads but due to the results threading seems to behave the best. I'd like to keep access to both forms during the process, the pc, and screen refreshes realtime.[code]
View 2 Replies