Synclock A Section Of Code While Waiting For ShowDialog To Return?
Jun 1, 2010
I'm having trouble working out how to lock my application out of a section of code while it waits for a response from an external program've used Synclock on a section of code with the Me object in the expression. In this Synclock I call an overridden ShowDialog method of a dialog box, which has a timeout parameter, but does return the value from the underlying ShowDialog function call ,once the timer is setup. Works like this.
SyncLock Me
Dim frmDlgWithTimeout As New frmDlgWithTimeout ' dialog box with overridden ShowDialog '
Dim res As DialogResult = frmDlgWithTimeout.ShowDialog(10 * 1000) ' 10 sec timeout '
What is the proper way to call up a form and wait until it receives a replay before moving onto the next code step? [Code] Now lf is the login form that waits for the users password and then, depending on if its correct or not when they hit OK it should send back a true or false (isLogedIn). Currently i do not know how to have the code wait until it receives something from the login form before moving onto the next code.
If i use my old code here:
Do Until isLogedIn = True isLogedIn = isLogedIn intX = intX + 1 Loop
It never ends if the user puts in a false login password so it just keeps waiting.
Is it possible to skip a code block when a synclock is active?
For instance:
A object of class Bicycle is used by thread 1 and has a synclock on it.
Then thread 2 comes along and needs to know if the lights of the bike are working. But if there is a synclock active then thread 2 just forgets about checking the lights and goes to make a delicious chocolate pie.
I'm writing a program and have run into a bit of a snag. I have the code perform a button click on certain buttons, the reason for this is I have a bunch of buttons that each do something and one that does everything automatically. I suppose I could rewrite everything under that one button but that would essentially double the size of my program, I could use an if statement to catch the fact that the program is in automatic mode but that would be about 15 conditions (not looking forward to writing that statement ;p)
Clicking the buttons is a nice simple, clean solution. The exception being the program performs the click then continues on executing the rest of the code in the actually clicked button while at the same time executing the code called by the code click. Main problem with this is the data that needs to be populated by the code click isn't being populated fast enough for the code in the main button so then there is errors, blank data, program doing nothing. A simple sw timer to delay could work (I know how to make one of those) but the problem with that is the program is executing against a webpage and if the webpage takes a few seconds longer to load then anticipated everything is out of wack again. I'm looking for a simplish way to cause the program to wait for ALL code called by any raised event to finish before proceeding.
i.e. Call Button.clickEvent > Wait for code and subroutines executed by Button.clickEvent to finish > continue with rest of code in button.
Below is the code I'm using so far for the user clicked button.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Button4.PerformClick() 'Need to wait for all code executed by Button4 and anything it calls to finish x = 0
I would like to execute an external program within powerpoint after the presentation has loaded so i can see if its working. In short my overall objective is to execute the external program which will open up the command prompt and use the sendkeys method to sendkeys to command prompt which help it to run a script at the correct time (which is after presentation is loaded).
I'm looking for a little help; I've tried everything. Here is a little section of code of a bigger project. What do I need to plug into the ? in the FillRectangleRectangle call to get this to work? I got the FillRect... example from MSDN, but I can't figure out how to call it correctly.
Private Sub PictureBox1_Click(sender As System.Object, e As System.EventArgs) Handles PictureBox1.Click Dim i As Integer Dim pt As Point Label1.Text = "=" & MousePosition.X & " Y=" & MousePosition.Y & " "pt = New Point(MousePosition.X, MousePosition.Y) For i = 0 To 117 If rects(i).Contains(pt) Then Beep()FillRectangleRectangle(?, i) End If Next i End Sub Public Sub FillRectangleRectangle(e As System.Windows.Forms.PaintEventArgs, ByVal i As Integer)Dim blueBrush As New SolidBrush(Color.Blue) e.Graphics.FillRectangle(blueBrush, rects(i))End Sub
What i am tring to do is execute certain code based on a variable held in a module someting like compiler directives, here's an example for lack of an explanation.[code]...
I am having trouble with this code. Can someone tell me why the "Project Processing' section doesn't run at all? The 'Client Processing' section runs and executes find but it seems the 'Project Processing' section does not.
Code:
Public Sub btnExecute_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExecute.Click Dim mBaseFolder As String Dim mProjectFolder As String Dim mClientName As String Dim sClientFolder As String Dim sProjectFolder As String
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).
I am creating a custom config section that will allow me to manage what ELMAH exceptions I want to ignore from my VB.NET/ASP.NET app. Here's my code. I made it easy to paste in a blank code file if anyone's up to the challenge of diagnosing the problem.
CODE:
When I execute this code:
CODE:
I get the error An error occurred creating the configuration section handler for IgnoredExceptionSection: Could not load file or assembly 'WEB' or one of its dependencies..
What boggles my mind is that this all works fine in my C# console test app after I convert the code from VB.NET using a web utility. However, when I paste the VB code from my web app into my VB.NET console test app, it doesn't work there, either, so it appears to be a C#/VB issue. What am I doing wrong here?
I was just wondering if mixing SyncLock blocks and Monitor.Enter/Exit statements is dangerous. I know SyncLock uses Monitor and a Try block in the background, but are there any problems with using the two together for thread synchronization?
I am trying to return a structure from a class.vb file to an aspx page. Is this possible, if so how would you do it in the aspx page and the class.vb file?
I want the program to display the text "Waiting for connection..." while the program is actually waiting for a connection. However, when I run the program, the form doesn't even appear because the TCPListener is waiting. What can I do to have the program appear and show the text while it's waiting for a connection?
Imports System.Net.Sockets Imports System.IO Public Class frmMain Dim client As TcpClient
I am pretty new to multi-threading in general and I would like to know how can I lock a shared integer variable to not be accessed by other threads while it is read/updated by an other thread.When I try do do SyncLock myInteger, I get that error : Error 6 'SyncLock' operand cannot be of type 'Integer' because 'Integer' is not a reference type.
Here a simplified example of what I mean
Private Shared myInteger As Integer Private Sub MySub() SyncLock myInteger ' This does not work ' read/write a new value to myInteger End SyncLock End Sub
MySub is called by multiple instances of the class, and running in multiple threads?
Is there simple way to SyncLock an object that can be null? And before you ask for it, yes, I know that it isn't logical to perform a SyncLock on a null variable. However, that would simplify my code because right now, I have no choice but to perform a null check all over the place before calling a SyncLock.
I was wondering if this is known / expected behavior. By design?Is it documented somewhere?
My 'real' code does need something to keep one thread from accessing a listview while another is busy clearing and refreshing the Items collection, so it's not as easy as omitting the synclock section in the example below (The SyncLock in my case is on the ListView).
This code, which can be pasted over a new empty form's user code class, deadlocks during the Invoke call. It doesn't reach the entry point of SetText (setting a brakpoint there, the deadlock occurs before the breakpoint is hit).[cod]e...
I have an application that requires several threads, otherwise the main UI thread would end up frozen.i am after a little advice as i have not really don alot of threaded applications.
First Question;
I have a thread which handles data coming in from the serial port( this wil become much more complicated), is it safe to use a synclock on the serialport object : -
Suppose I have a byte array, Private Data as Byte(). This array is private within a class. The class provides public functions for reading and writing to Data. This class can be accessed by multiple threads, so I want to avoid a situation where reading from it and writing from it don't happen at the same time.
For now, I am using SyncLock to avoid issues. Can I put SyncLock Data in just the write functions, or does it need to be in the read functions? Or, both? I don't have a specific code example in mind. I am just curious if there is any benefit to locking for both read and write functions if the writing functions' SyncLock will make writing have exclusive access to it in the first place.
I'm trying to SyncLock my DataTable, to avoid problems with multithreading and stuff. But it doesn't seems to work. I'm trying to lock a DataTable wich is acceseed inside a nested for-loop:
vb.net SyncLock radiolopere For Each row As DataRowView In tableview
I am getting the warning that the function doesn't return a value on all code paths.
Function newgradelevel(ByVal valscore As Integer, ByVal strgradelevel As String) As String If valscore >= 70 Then If strgradelevel = "Freshman" Then newgradelevel = "Sophomore" ElseIf strgradelevel = "Sophomore" Then [Code] .....
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?
I have a List of objects shared by multiple threads, it sometimes generate IndexOutOfRangeException when trying to Clear. While searching for solution I found that I should use SyncLock while accessing the List. But my question if what is the importance of lockObject in SyncLock block E.g. while clearing myList
Can I use Synclock myList myList.Clear End SyncLock or lockObject should be different from myList?
What I think about sysnclock is "lock is obtained for object specified as lockObject". What if I specify list to be cleared as lockObject, shouldn't the compiler supposed to obtain the exclusive access to list before clearing it ?
Once again Invoke has come back to haunt me! I have an application that has some background threads, serial communications and obviously a GUI. Now, the serial ports received incoming messages as events and these get processed and incoming data is logged both to a file and also appended to a RTB in the GUI (done using Invoke if InvokeRequired is true).Now, under normal circumstances everything is super happy and runs quite nicely but when stressed I reach some sort of deadlock.
What happens is I have two methods AddOutput and RemoveOutput. These both sync over an object SyncOutput As Object. When messages are received on the serial port they are processed and depending on whether or not a response is required AddOutput is called. This adds out going messages to a dictionary which is then accessed by a thread and the messages are sent out. If an acknowledgement message is received then the corresponding message in the dictionary is removed.