Multithreading - Code For Running Multiple Threads?
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.
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?
I have one Private sub that runs in a loop. I want the sub to run multiple times at once. For example the program runs, you press start; you run the program again and press start, again and again... the same program doing the job at once. now i just want one program do to it alone. But i would like it to be user defined. exp. run program. type in a text box 10. press start. and it works as if 10 of them work open working on the same thing.
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 ?
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] .....
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.
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
It's easy to do so in objective c but I do not know how to do so in vb.net update:I know about control.invoke. But control.invoke requires a control that may change from program to program. What would be the easier way?So yes program is winform. However I need a solution that does not depend on any specific control. If that's the case actually I do not need things to be run on main thread do I?
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?
I have 10 threads each using the same sub to do work. This sub is calling a function to save the results. How are the threads accessing the sub? Is each one getting a fresh copy of the sub to do its thing or are they using the same piece of code and need to wait for each other to finish processing? I don't get any hits when searching for such a specific scenario. I am wondering because it is about using sockets (usually lightweight stuff) to retrieve a resource and the cpu is working at 100% all the time. Still it is very fast, 900 internet queries finish in about 3 minutes.
i have some test code which i run at every load of a page in my asp.net website [Code] the "dotrace" simply add a record to a log table in the db. now the right result would be that i should have the entries in the db in order "entered","exiting","exited" but actually when i look in the db i see first 2 "entered" then 2 "exiting" etc. meaning that the multi-threading is working ok, but not the synclock. is that correct?
and how can this be fixed? the real code will be adding records to the db and might be called from several pages of different sessions, but the same code must not run twice concurrently. if i open multiple pages at once, they still clash some times. but if i'm correct, the issue is now not with the synclock as much as with the httpruntime.cache, because when using a standard property, on one page, the code works 100%. so how can i make sure that 2 threads, even from totally different sessions never run the trylock simultaneously?
I have the following multithreading function to implement threads fetching from a list of urls to parse content. The code was suggested by a user and I just want to know if this is an efficient way of implementing what I need to do. I am running the code now and getting errors on all functions that worked fine doing single thread.for example now for the list that I use to check visited urls; I am getting the 'argumentoutofrangeexception - capacity was less than the current size'/Does everything now need to be synchronized?
Dim startwatch As New Stopwatch Dim elapsedTime As Long = 0 Dim urlCompleteList As String = String.Empty
My question is, imagine I have two List(Of T) objects and a subroutine in a multithreaded environment that modifies both of these objects. I don't understand locks very well, so I'm unsure whether I can just do:
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 processing won't start if the XML is not valid.
Now my question is: Will opening the new thread increase memory usage? normally I would guess it will (for normal applications) but here I am returning an answer to the client and essentially ending the process of the main thread.
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.
I created a background thread that get's data and returns it to the main thread; this works. Now I want to be able to stop the SQL request from the main thread (probably on a button click). This is my test code for creating the thread (working):
[Code]....
How can I access the background thread to stop the query on demand? Do I need to set a flag on the main thread telling the background thread to stop running then have the background thread poll the main thread at intervals? I was trying to look for an example but I wasn't able to find a good one.
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.
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.
what i did was i use a select statement in opening multiple IE just for testing but the main function is what you put number on a textbox then the number the IE's will open for example i put 100 on textbox then when i click a button then 100 IE's will open so if im going to use select statement when opening 100 IE my code will be crazy... heres my sample code..
Context: I'm working with a relatively simple winforms application, written in VB.NET on the .NET 3.5 framework in Visual Studio 2010. Issue: The FormLoad event creates two threads when the program is opened. One handles automatic update checking and the other performs a time consuming task syncing files with the internet. These threads are initialized as follows:
How to run multiple funcations simultaneously using multithreading concept?
Actually i am making a software which has backend tool as MS ACCESS. it has 15000+ records in database and i need to display that records as my software loads..but it is much time consunable and sometimes it even goes out of time exception
I am writing a project in Visual Basic where I need to run several instances of the same method in parallel. I can do this using BackgrooundWorker by having several (4) copies of my code module (modules 1, 2, 3 and 4) with a call to background worker in each. I then have a Main form which invoke the 4 modules which setup 4 simultaneous background threads. Seeing as the code is the same I want to simply invoke the same module 4 times.
However when I do this I get an error from Backgroounworker that it is already busy. As I understand it this means that it is being shared. However, I have specifically instantiated it as "private" (private with events worker as new backgroundworker). I have tried running the same code in a Class instead of a Module but unless I make it public I have no way of invoking it from Main. I need to be able to pass each thread data from main for it to work on and if the class is private I cant invoke it.
how to convert videos files using vb.net and ffmpeg. But as far as i know we cannot use multiple threads to run same exe file to convert files. Do you know how i can convert multiple videos using one external exe file (ffmpeg)?
I have not tried because my computer time was over. So iam just asking a general doubt whether if we attach it to one process then wouldn't the process get locked? Then can we multi-thread this application or not ?