I have an application with two forms - a splash form and the main form. The main form reads an XML file and displays data from the file in a rich text box. While that is happening the splash form is displayed. When the main form is ready to be displayed the splash form closes and the main form is displayed. I have a progress bar on the splash form to inform the user of the progress of the load. I want to set the maximum value for the progress bar to the number of elements in the XML file. In the main form I am using a reader to count the number of elements. After I get that number I wan to update the maximum on the progress bar control so it displays correctly. That is where I am getting the cross threading error. Now I could do that in the splash form. But where the real issue lies is I want to update the progress bar value every time I read an element in the main form process to read the XML file. That I don't think I can do in the splash form as it would duplicate the process of the main form and defeat the purpose of the splash form.
I have researched this issue but can't find an answer. I have tried the delegate route but I still get a cross-threading error. I assume that is because I am cross threading across forms.
I have this situation where I want to set the visibility property on the form but I have a cross threading issue. I have coded it like the following but is it possible to achieve it on the property on itself.
I've problem with my application. I have one class frmMain, where I have one Listbox. I'm developing a separate class that lunches a couple of threads. They do some work, and in the end I want to show the data in the frmMain listbox. I'm using the following code:
One sub that handles the requests to the Listbox. I declare it in Module
Module Functions Public Sub ChangeText(ByVal ctrl As ListBox, ByVal str As String) Try If ctrl.InvokeRequired Then
I'm using Visual Basic 2010I've created a ListBox and a BackgroundWorker using designerI want to change the location of listbox using backgroundworker but I get the error as follows:"InvalidOperationException was Handled by user code:"Cross-thread operation not valid: Control 'ListBox1' accessed from a thread other than the thread it was created on
I am a student attempting to learn VB.NET on my own. Today I wanted to tackle the BackgroundWorker component. I found an excellent article online: How To Use a Background Worker. I successfully completed the walkthrough and even performed the "adventorous" part that dealt with working with controls updating across threads using delegates.Now I came to a part that I didn't understand how it was working. To summarize the following code, I have a delegate that has a Label and a String in its signature. I then have a subroutine that is called on the worker thread. Inside this subroutine the delegate is created and (I guess) ran again so that it is on the same (Main) thread. Please correct me if I'm wrong here.
Here is the method is performed on the worker thread: Private Sub My_BgWorker_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles My_BGWorker.DoWork
I've been reading around trying to find out why I'd be getting this exception to no avail.
I'm using Visual Basic 2010.
Briefly, I have a "Settings Panel" form which takes a while to create (it contains a lot of labels and textboxes), so I create it in another thread.
After it's loaded, it can be viewed by clicking a button which changes the form's visibility to True. I use the following subroutine to handle invokes for my controls:
Public Sub InvokeControl(Of T As Control)(ByVal Control As T, ByVal Action As Action(Of T)) If Control.InvokeRequired Then
[Code]....
The SettingsTable.Create() method generates a bunch of Labels and TextBoxes based on the contents of the application settings and adds them to the SettingsTable.
When I click on the ViewSettingsPanel checkbox, I get a cross-thread violation error.
I have a relatively simple question regarding the best way to call the DataGridView.Rows.Add function when it is inherited into the current control. Which is the best way to make the call to the inherited control? Call it directly in the invoke or call it using recursive-like function? They both seem to produce the same result, a row gets added and the quantity is returned, but which is the most efficient?The delegate: Private Delegate Function ReturnDelegate() As Object
The two ways are:
A) Private Overloads Function AddRow() As Integer If InvokeRequired Then Return CInt(Invoke(New ReturnDelegate(AddressOf AddRow)))
I looked around the site and the questions I found relating to this subject were for C# (the application that I am maintaining is written in VB.NET), so I apologize if I overlooked one. Here is where I am calling my thread:
I've not got any issues with Cross threading but I hate the amount of work involved in sorting cross threading issues out.I thought today that my inherited Listview Control could have built in cross threading capabilities; it would decrease the amount of work on the form, and tidy things up.I've got this to work (EnsureVisible method), BUT I'm a little stuck when it comes to the Items.add below is my example control.
I'm adding multi-threading facilities for the first time. I have a function that is wrapped to be run in a separated thread. This function retrieves data (text) from a combobox and it works for sure without multi-threading.
When I call it as multi-threaded, I get the following error when I try to retrieve the data from the cmobobox: Cross-thread operation not valid: Control 'cmb1stBL' accessed from a thread other than the thread it was created on.
It looks like a restriction of thread-safety... I assume that the child thread cannot read from his parent, to make sure that he doesn't change his parent data. So how can I read the data from the combobox? Should I read the comoboxbox data before calling the child thread?
I have managed to create and code a file menu exit with the following code, however I just can't seem to find out how I am able to edit the red X in the top right hand side of the form next to the minimise and maximise buttons?
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click Dim close As String close = MessageBox.Show("Are you sure you want to exit?", "Exit Log Book", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
I'm trying to do a basic function, I'm using Visual Basic 2008 express, I have a windows form with 1 textbox, 1 button and a serial port. When the button is pressed serialport1 is opened then the data received is trimmed to remove unwanted char from start and end and then is displayed in the textbox, when the button is pressed again the port is closed, this works fine but in debug mode I get a cross thread error, telling me I can't use textbox1.text=result
[Code]...
How can I mod this code to get rid of the error?? It's been suggested to me to use BeginInvoke or Invoke but i'm not sure how to use this can someone
I have a frm_Main, which starts a thread. The thread then goes and calls a module, which has a thread.sleep() in it. This causes the mouse to freeze up while it sleeps, despite being called by the child thread. I thought this would have be on the thread time-slice? However it is causing my form to freeze for the sleep duration.
I'm trying to dive into what I consider a deeper end of VB.net to see how far I can go with it. I have a project created, ironically called "My First Server". The aim of this is to create a server which can handle multi clients but additionally isn't the commonly shown tutorial setup of a console application. So it is created as a Windows Form application. The main form (Public Class PrimaryForm) consists of only one control which is a listbox control. This is named LogOutput.
I'm setting up a simple app that has 2 variables, one from a combobox and one from a textbox.Putting all my code directly in the button1_click sub works just fine, however, I wanted to add a marquee progress bar so I tried to implement a backgroundworker.
[code]...
and call it with Me.Invoke(New SetComboBoxTextDelegate(AddressOf SetComboBoxText), ComboBox1.Text)but it still throws the Cross-thread operation invalid error.
When it comes to threading. I've managed to adapt one of JMcIllhinney's backgroundworker codebank examples to somewhat suit my needs, but not completely. I have a main form, and a second form that appears while I'm running through a for loop. It informs the user what is currently happening. I set up a backgroundworker that allowed me to continue to use the main form during the for loop, but the other "status" form was completely frozen, and any labels or graphics were shown as white boxes. I am struggling to figure out how to be able to move/interact with both forms while the loop is running.
I have a few forms that have a lot of really intensive updating along with a great deal of user interface (text boxes, button clicking etc) Is it possible to open a separate form as a separate UI thread from the start up form that called it to "show" or open or whatever the new method might be?
I have a DataGridView that is being filled with data from a table. Inside this table is a column called 'group' that has the ID of an individual group in another table.
What I would like to do, is when the DataGridView is filled, instead of showing the ID contained in 'group', I'd like it to display the name of the group. Is there some type of VB.net 'magic' that can do this, or do I need to cross-reference the data myself?
Here is a breakdown of what the 2 tables look like:
table1 id group (this holds the value of column id in table 2) weight
I wish to use common CRC logic in a VB.NET or C# application as well as on a C/Linux application. I have one C/Linux application that interacts with a webservice (written in C#) and also a web application (written in VB.NET). For some data, I want to add a CRC to the data itself (say a file) from the .NET side and check for the integrity of the data (checking the CRC) on the client - and also vice-versa.
I'm thinking of porting my application from VB.net to the C# based MONO project, so it can run on both Windows and Mac. However, I am in need of a Mac-friendly alternative to WPF. It has to have very similar functionality. QML (by QT) is not a viable option, as it costs far too much money for us.
I have a interesting problem: Where I work we've built a home-grown ERP system in VB6 that we are slowly moving over into vb.net. There are some projects have are in .net: we have a hand-held C# project that uses a web service to talk to our database, I've built some reporting screens using Crystal and some smaller maintenance screens.
Well as we have been plotting the conversion out, we want to have a way to separate our business logic and UI so that the UI can be a win/web form or a Smart Device project. Is this even possible? I try to reference the DLL in a test I have and it gives me this error when trying to debug using a emulator Deployment and/or registration failed with error: 0x8973190e. Error writing file '%csidl_program_files%smartdeviceproject1system.windows.forms.dll'. Error 0x80070070: There is not enough space on the disk.
this is sumit from Larsen & Toubro Mumbai-India,I am writing a code for some sort of software in which execution of some code is required as soon as my software receive a barcode from barcode scanner (serial input). Now through datareceived event handler i am able to read the barcode but after that i am not able to send this barcode to any textbox or even i am not able to start any other event like performclick to any button or anything. I am getting an exception as cross linking of threads not possible. please refer to the image and give me the solution asap.
How can I cross reference a .contains for two textboxes? like
vb for each word in textbox1.text if textbox2.text.contains(word) then msgbox("There was a word found that should not be there",msgboxstyle.critical,"Invalid") end if next
Would I need to do a RegEx to get every word in the textobox? Or should i just use a listbox and do a for each I as item in listbox1.items?
im sorry if this has been asked before.but i couldent find it in my first look i have a form that runs a query on a mysql database but as it runs the query the form stops responding till it finishes sooo i had the smart idea of putting it in a back ground worker..
GREAT i thot i had it working it all seemed to go greeat then i noticed when i try to change the label text on the form to corispond to the info it got... it wont work it give me a cross threading error....
how to cross thread between the back ground worker and the origial form..
I am getting this error: Unable to cast object of type 'SGA.AppContext' to type System.ComponentModel.ISynchronizeInvoke'.I am not using a start up for my project but a sub main() and a threaded class AppContext
I am creating a CHAT interface for my game (when networking, server/client style) and I ran into a little problem..The way it works... I have forms for the SERVER (frmServer) and CLIENTS (frmClient) each of them have a LISTBOX (lbChat) in which I input (lbChat.Items.Add(string)) text as the users type it - in essence a chatbox...
So, let's use the CLIENT as an example (as it is simpler and the concept the same in both client and server cases)The Client form (frmClient) creates a thread that is used to listen for chat messages (via TCP) - so what I did was pass the listbox itself (lbChat) to the thread thus (I thought) solving my problem of writing into the listbox when chat messages arrive (and are caught by the thread and not frmClient of course)Now while debugging the code I get the following exception when my thread attempts to write in the listbox (lbChat) of frmClient General Exception: System.InvalidOperationException: Cross-thread operation not valid: Control 'lbChat' accessed from a thread other than the thread it was created on.
So now the question is how do I work around this cross-thread exception? How do I pass information (chat text) from my listener threads (and there will be multiple of them in the field, one per client) to the centralized listbox (lbChat) on the form?I need some kind of method to transfer information while also reducing the chances of running into contention issues (do I need to use ReaderWriterLock?), thing is I have no clue how to accomplish this task (I thought simply passing in the listbox would allow me to write to it in each of the threads).