I have a application that use threadpool, and each thread stores data in the same textfile. I now want to have each thread store the data in the same array instead and use a timer to store all current data in the array into the text file after every couple of minutes.
So what I want to do is:
1. All threads store data in one array that they all have access to
2. After every couple of minutes the data in the array is stored into the text file.
I know number 2 can be done with a timer, but is the first one possible? If so how do I accomplish this task?
I know a little about threading and delegates, as well as socket programming. I'm working with a VB.NET-compatible SDK called TrueVision3D to create a small online game for me and my friends. The problem is that I cannot for the life of me figure out how to pass data from one thread to another. I've created 2 seperate threads on seperate forms.
The first thread is created on a form titled FrmLogin, and it contains all the socket code. I need to be able to update variables in the second thread, which mainly consists of a render loop. The second thread is created on a form titled FrmMain. I'm not quite sure if it matters what forms the threads are created on, I'm just trying to give as much information about the issue as I can. I've tried using delegates and events to pass information from the thread back to the form it was created on, which works fine, but how do I pass data to the second thread from the first?
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
I've used mutiple threads in a VB.NET program but I don't know if I did it right.I would like to start about 3 threads.Can they all use the same methods?Will a separate instance of each method automatically be created for each thread?If not, how do you make sure that the data within the method that is used by one thread is not used by another thread?I would like some data to be shared by all threads.How is data shared among threads?What is the protocol for changing the data and checking for changed data?Is there a good tutorial / website that explains how to handle methods and data when using multiple threads?
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 want to reading in a excel file and extract the sCodenumber sDescription ans the sStatus and store them in a array : StatusComposeArray(5200) As MyCompose. After this I need this array for comparing outside this class. But as can you see the array is defined inside the sub: ReadingIn_ExcelFilesCompose [Code]
I have a file which is opened and the bytes are loaded into a class.The file needs to be split into chunks, and there is a header which gives the locations and sizes of the chunks.Should I (upon opening the file) split the file into chunk sand store each chunk in an array of variables And then when I want to access the data in the chunks I just use the array.
or store all the chunks in one variable together and then when I need access to the chunks get the location and size of them and use that to find chunks each time I need to modify them.
For the code below I get an error for the 1 to 5 part. It says end of statement expected. Is the way i've set out the syntax wrong, e.g the 1 to 5? [code] Also other than storing text to a rich text box what else can store numerical data in multiple lines?
im tryin to store data in an array using a structure. However, the code im using keeps returning a null referece exception, even when there is something in the input boxes. This is the code im using:
With SaveInfo(Index) .EmployeeID = EmployeeIDComboBox.Text .EmployeeName = EmployeeNameBox.Text
I am designing a test launch tool that I want the user to be able to select a product type from a list and then choose a station type from another list. Depending on what they choose will determine what is run (what is passed out).
The data will look like the following : Product Station Test to load Config file to use 10-9890-1 mfgtest1 Progamming.xml config5.conf 10-9890-1 mfgtest2 Configuration.xml config92.conf
i am try to read from a file and then split the data and store them in an array but i am getting an error. can someone please point to the right direction here is the file i am trying to read from
I'm trying to build something called a structure which will store data it retrieves from a text file. I have the structure set up like this: Structure Employee Dim FirstName As String Dim LastName As String Dim ID As String Dim Hours As Integer Dim Wage As Decimal Dim EarnedPay As Decimal End Structure [Code] ..... How to set these operations up?
I am trying to create the following program Store in a 1d array a set of 5 place names and in a 2d array the distances between the places. Ensure that the order of the places is the same in both arrays. When the names are places are input the distance between them is displayed. If they are not both in the table a suitable message is displayed
Dim town(1 To 5) As String
Dim Dist(1 To 5, 1 To 5) As Integer
Dim First As Integer
[CODE]......................
I think the best way forward is pass a parameter to the function findnumber.
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 ?
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.
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....
I have this class and I have a loop that launches multiple threads from the same class. This is all done from the main form.Now I want to update the richtextbox on the main from these classes.I have tried those begininvokes etc etc and nothing worked, no error but no output as well.Here the code for launching the threads :
Private PingObjects(100000) As Account 'Account is the class and login is the sub in it... PingObjects(I) = New Account Threads(I) = New Threading.Thread(AddressOf PingObjects(I).login)
[code]....
And to update the rtb, im using MainForm.log.text = "....." Nothing happens, no error.I have tried using the begin invoker method as well.
I've read a lot of different questions on SO about multithreaded applications and how to split work up between them, but none really seem to fit what I need for this. Here's how my program currently basically works:
Module Module1 'string X declared out here Sub Main()
[Code]....
This is only a rough outline of what actually happens in my code by the way.
My problem being that if multiple threads start running Main2(), they're dealing with the same X value as in the other threads. The loop inside of main2 executes multiple times per millisecond, so I can't just stagger the loops. There is often duplication of work done.
How can I properly divide up the work so that the two threads running simultaneously never have the same work to run?
I need help to implement multiple threads in application.Assume ds.table(0) has 5 and sometime 6 rows rows for i=0 to ds.tables(0).rows.count-1.I have to apply multiple threads, means all five/six rows should start at once using thead and "Process 1" .."Process 4" should also handled by threads.This is hierarchy that I have to apply with threads, how can I do it. It is requested to put piece of code so I can understand better.
I have an application that needs to perform a series of different actions at specific points in time.To do this I have a timer with various actions that occur in its tick event.One possible action is to send out a few messages via a serial port and then wait (between 1- 300 mins typically) for the next timer tick.Another possible action is to continuously toggle one of the control lines on the serial port until the next tick (again 1-300 mins).
In most instances, i'm happy for everything to run on the main thread, but in the case of toggling the line endlessly, I thought it better to give it its own thread.My problem is that for the new thread to use the Serial Port, it must open the port. Likewise, it must close it before the main thread can have it back.
Here are 2 code snippets
Private Sub activityTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles activityTimer.Tick Dim some variables here activityTimer.Stop() If speedThread.ThreadState = ThreadState.Running Then
I have a map image with data associated with the map indicated by RGB index. The data has been populated into an MS Access database. I imported the information in the database into my program as an array and sorted them to go in the order I want the program to run.
I want the program to find the nearest pixel that has a different color from the incumbent pixel being compared. (Colors are stored as string attributes of object Pixel)
First question: Should I use integers to represent my colors instead of string? Would this make the comparison function run significantly faster?
In order to find the nearest pixel of different color, the program begins with all 8 adjacent pixels around the incumbent. If a nonMatch is not found, it then continues onto the next "degree", and in this fashion, it spirals out from the incumbent pixel until it hits a nonMatch. When found, the color of the nonMatch is saved as an attribute of incumbent. After I find the nonMatch for each of the Pixels, the data is re-inserted into the database
The program accomplishes what I want in the manner I've written it, but it is very very slow. After 24 hours, I am only about 3% through with execution.
Question Two: Does my program behavior sound about right? Is this algorithm you would use if you had to accomplish this task?
Question Three: Would it be appropriate for me to use threads in order to finish execution of the program faster? How exactly does that work?
Question Four: Would it be more "intelligent" for my program to find the nonMatch for each pixel and insert it into the database immediately after finding it? (I'm making a guess that this would be good in multi-threading, because while one record is accessing the database (to insert), another record is accessing the array of pixels (shared global variable in program).
Question Five: If threading is a good idea, I'm guessing I would split the records up into more manageable chunks (i.e. quarters), and have each thread run the same functions for their specified number of records? Am I close at all?
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.
I have a created a class, which contains a sub routine.This sub routine, should ideally be accessable by objects which are not members of the class, so I would like to make the sub, a 'shared sub' (call it Sub1).
Question: I am using many threads and there will be possibly 100s of 1000s of threads all wanting to use Sub1 (which is at present, is not shared).At present Sub1 , is not a shared sub, so every time a thread wishes to use Sub1 , I am creating a (dummy) instance of the class and then applying Sub1, to that instance.
My program works flawlessly using the above technique.Question: If I were to turn Sub1 (which is not currently shared) into a shared sub, and directly had various threads calling Sub1, would there be any issues with locking, ie. would it possible for 2 threads to enter that thread and start overwriting variables, which another thread has written to?
NOTE: there are no shared variables/properties in Sub1 and all variables used in Sub1 are declared within the sub itself.