Synclock Doesn't Prevent Sharing Errors When Multiple Threads Access Same File
Apr 14, 2010
I am using Synclock to prevent multiple threads from logging text messages to the same file at the same time, but this doesn't seem to work:I get frequent sharing errors on the logfile, within the synclock block.The Synclock is using the variable holding the filename, because it exists all the time and because it is always the same object, whatever class instance or thread I'm in.[code]Despite using Synclock and a Using block around the code, I keep getting this error in the sw.WriteLine(Msg) line:System.IO.IOException: The process cannot access the file '(filename)' because it is being used by another process.Should I use some other type of object than a string to synchronize on?I cannot use a user interface object (button or so) because it is a windows service project.It was written and compiled in Visual Studio 2008, but targeting the 2.0 framework because it has to be able to run on some old Win2000 machines.
View 12 Replies
ADVERTISEMENT
Jul 7, 2011
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?
View 1 Replies
Aug 4, 2010
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
[code]....
View 4 Replies
Jan 31, 2011
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?
View 1 Replies
Sep 7, 2010
I'm starting to put in a database into my application, however I'm drawing a blank on how to share a database connection among the dozen or so different forms in my MDI application. I'm assuming this has to do with interfaces or something but I can't find any relevant examples anywhere. Can someone help me out? Ideally what I'd like is when the app is loaded up there is a call to a function in the forms loading area which establishes a single connection to the mdb, that I can then call via any form so I don't always have to open/close connections everytime I need to update the db?
Here's a basic example of the mdb database access code I've got working:
Dim dt As DataTable = New DataTable()
Dim OleDbTran As OleDbTransaction = Nothing
Using connJET As OleDbConnection = New OleDbConnection("connection string here...")
[code]....
View 1 Replies
Mar 18, 2011
I recently had some problems with the performance of the Word object model. In an add-in that I wrote for Word I need to parse through all the words of a document and replace some of them or ask the user for the ones that have multiple replacements. I know that it is faster to ask Word for all of the document text content at once and then process it and put it back all at once again, but this is not suitable for my add-in because I need to have access to the range objects that represent the words that have multiple replacements so that I can somehow mark them in the document and present the user with a tool tip from which he can select the replacement he wants.
So for the moment the single great speed improvement that came in my head was multithreading since most people already have dual core or better. The problem is that all the things you find on Google say that multithreading in Office is a very bad thing to do.
So is there any one who managed to do this in a manner that worked in most of its usage? By this I mean if it also worked on other PCs then the development one?
View 1 Replies
Apr 16, 2009
I want to make it so my VB program can be registered to be used with only one computer & possibly be registered online.
(Yes i searched the site but i saw no useful program registering guides that i uderstood and worked with the newest version of Visual Basic .NET)
View 35 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
Oct 20, 2009
I am considering a piece of code that will manage access to a collection object from multiple threads - add, update, remove, clear. OK ... so I have put a sync lock within each method, but what is not clear from the MS documentation is exactly how the sync lock is behaving. Is it locking the piece of code it wraps? Or is it locking the object? And if it is locking the object a private static object should lock out any code locked on the object within all instances of the object? i.e. if an add operation is underway, an update, delete or clear will wait for the lock to be released.
Finally, if I have multiple threads contending for the sync lock, how is the release managed? First come, first serve? random (from my p.o.v)? Is there a chance that two separate threads could blunder into 'locked' code simulataneously?
View 2 Replies
Nov 16, 2010
I have a class that contains a List(of T) used in a multithreaded application. I have three methods Get, Add and Remove where these access and modify the List(of T). I was using SyncLock to lock m_List any time I queried it for the desired object as well as when I added or removed objects. However I'm curious as to if there is a performance gain by simply locking m_List when I add an object or remove an object as opposed to when I'm searching for a desired object?
[Code]...
View 1 Replies
Jul 15, 2011
I have written a program in VB 2010 that dumps documentation info into an Excel file. Basically, the Excel file is a log file that keeps track of revisions for design drawings at an engineering firm.
There are approximately 20 people that have access to this program. However, I've run into issues where multiple users may be using the program and trying to send info to the Excel file at the same time. The Excel file is set to read only. My program opens the file with write access, and dumps the info into the appropriate cells, then closes the file. If one person is in the process of using the program, it causes an error with another persons system if they try to use it at the same time.
In some cases, it causes my program to crash, and it leaves the Excel file open on someones system.
Typically, my program would only have the Excel file open for a couple seconds. So, the issues mentioned above are rare, but they do happen.
I'm looking for ideas to prevent this issue from occuring.
View 7 Replies
Jul 2, 2009
I have this proyect where Im trying to do a program that concentrates all the Weather related links,information, and images in a single place, to make easier the job for a friend teacher whos a meteorologist.
the program per se does a lot of "parsing" of htmls, eliminating the information not needed and also download automatically certain images ( Satellite specially.. ) most of these images are... sort of hidding inside the html ( thus the parsing.)[code]...
View 5 Replies
Dec 26, 2010
I receive three errors using the following function:
Private Sub readWebpage(ByVal url As String)
Try
Dim req As System.Net.WebRequest = System.Net.WebRequest.Create(url)
Dim resp As System.Net.WebResponse = req.GetResponse
[code]....
The remote server returned an error:
(500) Internal Server Error.
The server committed a protocol
violation. Section=ResponseStatusLine
[code]....
How would I be able to prevent these errors?
View 1 Replies
Aug 8, 2011
I've written a JavaScript function which validates form input and highlights the input fields and displays any error messages, which I have tested and all works fine. i have called this function from the OnClientClick attribute of an asp:Button tag. However, if the JavaScript function determines there to be validation errors, I want to stop the form from submitting. How do I do this?
[Code]...
View 2 Replies
May 6, 2009
i coded a simple webbrowser and started surfing with it but i realise it doesnt prevent pop up advertisements.. how i prevent it?
View 1 Replies
Jun 25, 2011
on my program i have an activation in it and in order to activate the program you need to enter a code that is stored in the settings. so i was looking through my computer and i found the programs config file. and so I opened it and i found all of the codes for the activation. I need to find out how to make the file so the user doesn't have access to it and then how to move it to a more hidden place in the C: drive.
View 3 Replies
Mar 9, 2011
I'm writing a simple little program in VB.NET that has to play two sounds - at the same time.The problem is, that when I call SoundPlayer.Play() twice in immediate succesion, it seems that the latter call sorts of "takes over" the thread that is created by the first call, instead of creating a new one, like it says it should do in the docs.I'm using the following code:
Private Sub Button_OFD_Sound1_Browse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_OFD_Sound1_Browse.Click
LoadSound(OFD_Sound1, TextBox_OFD_Sound1_SelectedFile, SoundPlayer_Sound1)
End Sub
[Code]...
View 1 Replies
Sep 15, 2011
I have a loop that creates several threads as such[code]...
View 1 Replies
Nov 10, 2010
I have the following code... in an MDI application. [code] Various lines of code which put data into the Myinstance and then save the instance into the ArrayList.I have buttons which run procedures and functions in the formchild and also in the Class1. I need it so you can jump between formchild instances, and when you do so and click a button on that form, it will run the Class1 code but using the data in the arraylist and myinstance that was set previously by the selected formchild. Then if you switch to another child it uses data from this form. Can this be done by declaring the arraylist with more dimensions and then refer to the records with the index of the selected form instance, e.g.Selected Child is index(3)
View 1 Replies
Nov 6, 2010
I have created an MDIparent form and a MDIchild. There is a button on the parent which makes multiple 'clones' of the child form, each time its clicked.I also want (maybe with a module) a set of variables, and array of a structure but these are available to each copy of the child, but each copy's variables, arraylist etc contain its own data?Therefore if you select child1 the variables and array will have different data to child2, child3...etc...
View 3 Replies
Sep 9, 2009
I am making this program for a school assignment but it has errors when calculating
Private Sub frmReceipt_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'When this form is loaded, assign the date to the date label & start the timer
lblDate.Text = Date.Now
[CODE]...
So if counter finishes, execute the following code
If counter > 4 And km >= 1 And kmcashset = 0 Then 'If there is still kms to calculate 'And kmcashset = 0
kmcashholder = kmcash
km = km / 5
[CODE]...
And if I add counter = 0 and km = 0 at the end of that "If counter > 4 And km >= 1 And kmcashset = 0" Then it doesn't calculate anything correctly. I supply it with 9 for Distance and it returns 4 for excessdistance which is correct but returns 7 for excessdistancecharge when it should be 4! When I supply 23 for Distance it returns 18 for excessdistance and 11 for excess distance charge which is correct. (???)
Excessweightcharge calculates correctly.
I think it may be the way I'm implementing it, through the use of AND or maybe it's because it's in timer tick?
-Minimum charge of $5 which covers 10 kgs for the first 5 kms only
-Each kg over 10 kgs incurs a charge of $0.50
-Distances over 5 kms incur an additional charge of $1 per km up to 10 kms
-For deliveries over 10 kms, the extra distance should be rounded up to the nearest 5 kms and charged at $2 for each extra 5 km block.
EXAMPLE 1:
Packet weighing 9kms travelling 9 kms
Standard charge for first 5 kms ($5.00)
Weight less than 10 kgs so no extra weight charge
Extra distance charge 9 - 5 kms = 4kms x $1 = ($4)
Total delivery charge = $5 plus $4 = $9
[But my program returns 7 for excess distance charge]
EXAMPLE 2:
Packet weighing 33kgs travelling 23 kms
Standard charge for the first 5 kms ($5)
Excess weight 33 - 10 kgs = 23kgs x $0.50 ($11.50)
Extra distance (23 - 5kms = 18kms):
18kms ( 5 to 10 kms at $1/km) = ($5)
13kms (18-5)/5 = 3 (rounded up) x $2.00 = ($6)
$5 + $6 = $11
Total delivery charge = $5 plus $11.50 plus $11 = $27.50
[My program calculates everything correctly]
View 2 Replies
Sep 13, 2011
My question is in two parts:
1) I am writing an application for a touchscreen which will have several different Forms - each of which will be full-screen. What is the best way to achieve this? Hide/show each Form as the user navigates between screens? MDI Parent with multiple Child Forms becoming visible 'on top'? Or is there a more elegant solution?
2) I would also like a 'banner' on the top of each Form (or always visible on the top of the MDI Parent, etc) similar to a 'navigation frame' on a website. This banner will display a clock with the current time, and the current GPS location (meaning that a Timer will be used to get/set these values every 1000 milliseconds). I thought of using a UserControl for the banner - but if this is used on multiple Forms then I will end-up with multiple Timers all waiting 1000 milliseconds to update essentially the same information.
Is there a best practice for this type of scenario? - my thoughts so far are using the "Main" Form for Global Timers, etc - but then how do I update all Form clocks each second? (without iterating through all visible Forms... which seems messy).
View 5 Replies
Jun 11, 2011
I have a windows forms application with one exe and several dlls(Class libraries) in a single solution. The application uses common data that is used across all the dlls. I would like to load the data when the application is starting up and use the loaded data at various points in the dlls so that I do not have to load the common data again and again. How can I share the data loaded in main EXE across the DLLs?
View 2 Replies
Oct 21, 2009
today I finished my VB project which is a program that generates costs of pizza's by what the customer order. The code is all complete just looking for some idea's on to stop bugs and clean up the code. So below is all my code and picture of the form. Errors occur when someone doesn't pick a value, so what i want is there to be default values as 0.
[Code]...
View 1 Replies
Sep 14, 2009
Say I have some code that does this:
Public Function AppendToLogFile(ByVal s As String) As Boolean
Dim success As Boolean = True
Dim fs As IO.FileStream = Nothing
[Code].....
First of all: is it a problem that I have that Try/Catch/Finally block inside of a SyncLock?
Second of all: suppose this code runs, on an event, potentially many times within a small timeframe--say, ten times in one second. Is it OK to have it SyncLock like this, or would it make more sense to have it add a line to a Queue, and then write all the lines from the Queue to the file on a timer that goes off, say, every second?
View 2 Replies
Jun 25, 2009
Tried searching and found some related issues but none exactly like I was having
I iterate thorugh a DGV and write to one of the fields of the row. After it writes this field, I do an update() command.
View 11 Replies
Jan 6, 2012
End A statement which as far as i know doesn't close you program properly and hides errors. Right now i'm being forced to use end because i don't know how else to close my program properly. I'm not sure where my problem is but some of you should be able to fix it. I'm trying to make a game using directx with a game loop. This code is the skeleton of what i'm making.
Public Class Form1
Private ProgRunning As Boolean = True
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Show() 'Make the form appear
Me.Focus() 'Give the form focus
[CODE]...
This code runs alright because end is being used but if you rem end out the error which it's hiding comes out. The error is "Object reference not set to an instance of an object." I'm not totally sure but i'm guessing that the error is refering to the form.
View 9 Replies
Apr 18, 2010
it would be best if I just copy and pasted the code (it's very trivial).
Private Sub Main() Handles MyBase.Shown
timer.Interval = 10
timer.Enabled = True
End Sub
[code]....
An exception, "The object is currently in use elsewhere", is raised during the tick event.
View 1 Replies
Jan 13, 2010
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.
View 2 Replies
Nov 6, 2010
This code will show you how I started multiple threads:
For i As Integer = 0 To 10
Dim MyThread As New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf MySub))
MyThread.Start()
Next
Now I'm trying to stop the threads before closing my application but I don't know how to do that?
View 6 Replies