ProgressBar - Getting UI Thread To Update While Reading Database
Aug 8, 2011
I'm having trouble getting a progress bar to update. I'd be okay just with a moving marquee bar. Basically, I'm reading a database routine in a SqliteReader.vb class. I need to use the worker_DoWork routine, but I'm not sure how to expose my variables coming from Form1: graphData, graphComputations, m_debug to the worker_DoWork sub. How is this usually done? [Code]
I have a program that runs for some time and I would like to update the user on its progress. The rest of the GUI is updated using Delegates and Invokes and such (Java is Soooo much cleaner in this regard - everything is thread safe!!), but there is no invoke method for the progress bar. How can I use a delegate to update the progress bar when there is no invoke to invoke!!
What I'm trying to do is load an Excel file and see through each row; in each row I want each cell in that row to be put into an array which would loop through for the next row.
Through finding the row cells I want to update my database with this information. At the moment I am assigning the excel file to a datagridview because I do not have the knowledge to find another solution after looking across the internet I still ain't come up with a suitable solution.
Upon running my code below; after one minute it crashes with the following error:
"The CLR has been unable to transition from COM context 0x94cc80 to COM context 0x94cdf0 for 60 seconds. The thread that owns the destination context/apartment is most likely either doing a non pumping wait or processing a very long running operation without pumping Windows messages. This situation generally has a negative performance impact and may even lead to the application becoming non responsive or memory usage accumulating continually over time. To avoid this problem, all single threaded apartment (STA) threads should use pumping wait primitives (such as CoWaitForMultipleHandles) and routinely pump messages during long running operations."
The code below is what I'm using atm (which crashes) but I want to be able to
Try 'declare a oledb connection to connect to the excel file Dim MyConnection As System.Data.OleDb.OleDbConnection
I have a process (adapter.fill) it takes much time to execute. I want to use thread for progress bar to move. I use code like below [Code] showform is a form that contains progress bar and in its form load progress bar is move but it has a error and it doesn't work correctly. is there another way to use progress bar with thread?
how can i allow a progressbar to be changed on a seperate thread? my code keeps saying that i cannot access it because it was created on a seperate thread:
[Code]...
If it is not worth it, it is not fun - you say programmers are boring but i say they are worth it.
I read several posts but I didn't still find solution on my problem I created 2 forms: first is main where I do operations on excel file with 20000 rows and in second form I created progressbar. the name of main form is form1.vb and the name of second one is wait.vb In main form I wrote:
I have a dictionary object (let's call it _do) I am using to cache some values for use in a multi-threaded program. I have a single controlling parent thread, with a timer function _doTimer() which can kick off child threads with a new instance of class MyThreadObject in each. My parent thread has _do as a property and with each time _doTimer() gets called, it may or may not repopulate _do depending on cacheflag settings. I pass a reference to _do to each instance of MyThreadObject and those threads at some point read the values of _do but DO NOT write to it.
What I want is to ensure that the child threads do not try and read _do whilst the parent thread is writing to it. Same thing but very slightly different -> I also don't want the parent thread to write to _do whilst the child threads are reading from it. However there is no problem with 1 child thread reading the values of _do at the same time as another child thread is reading the values - so ideally I do not want each child thread to completely lock out read access, only locking out Write access.. The code is roughly like this:
My program starts a lengthy background operation in a separate thread, and the main thread makes the ProgressBar start scrolling. My question is, how do I tell the main thread how to know when the background thread has stopped, so it can turn off the ProgressBar?
I have a windows form with a progress bar and a button to start/stop the process. I am performing some action when clicked on 'Start' and updating the ProgressBar accordingly and its working fine. But when I try to click on the 'Stop' button when the process is going on, I couldn't access the Window. If I click for multiple times, I am getting (Not Responding) on the titlebar.
Then, I created a thread and run the function (which performs my task and update the ProgressBar) in it. I am getting an error that it could not access the control which is created in another thread.
I'm having difficulty in working with MultiThreading.I want to add to my project a ProgressBar to show the working flow.I'm getting combinations from many Strings, the number of combination can be really big, so it takes few seconds or minutes.
Now I upload update to a share folder inside the company network I have full Permission access & everyone read onlyas any one out side the company can't use the program so there no password on the share folderbut I need now to protect the share folder as I have to use real IP on the database connection to allow the company branch's to access the database
Main form loads and displays a table of records. Form1_load goes through each record and looks up external data for updates and this takes noticeable time. I have a splash screen that comes up while the main form is loading and I want the splash screen to display the status in a progress bar named ProgBar. I recall the method used a 'delegate' and my SplashScreen1 uses this code:
Delegate Sub UpdateBar(ByVal X As Long)
[Code]....
The main form already loops through each record and all I want it to do is update the progress bar if the splash screen is open.
1) I am trying to use background worker to download a large file and update a progress bar to reflect the changes as the large 5GB file is being downloaded, and also update percentage completed to the label.text(lblInfo).
2) As I was goggling I came across some info that a web client is needed to calculate the maximum size of the file and divide by 100 and you can stream it down with the web client. Reading it is one thing, implementing it is another as I spent week trying to get it to work.
UCPocoAPoco Imports System Imports System.IO Imports System.Diagnostics
I have a simple WPF windows application trying to read a serial port with the System.IO.Ports.SerialPort. When I try to read the incoming data in the DataReceived event, I get an exception saying that I don't have access to the thread. How do I solve it?
I have this in the WPF window class:
Public WithEvents mSerialPort As New SerialPort() Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnConnect.Click With mSerialPort
I want to create thread for reading data from Excel. I found this link.url...I download the sample project and tried to run the project.First I build the project using visual studio 2005 and add reference the NetFX20Wrapper.dll..When I run the project, I got error "ActiveX Component cannot create obect" in the Line "Set background = New NetFX20Wrapper.BackgroundWorkerWrapper"
I'm learning VB.NET coming from a VB6 and Java background.In my app, I've got a function that validates the fields on a form. All it is doing is reading them, not updating. I've searched and see info about the backgroundWorker class, but all the examples are about updating the fields.I understand the idea of threading and how it works, but have never written code that spawned threads myself. I've always let the language handle it. It seems like a lot of work that I would have to write a sub using the backgroundWorker for every time I wanted to read or update each field. The couple of books I've got that introduce you to the language show you reading or updating the field directly.How do I know what threads are running other than writing the code like I'm used to then running through debugger to figure out what variables are on which thread?
I get this error when i request the 'SelectedItem' property of a standard .NET ComboBox control from a BackgroundWorker control.
I know why this exception is raised, however, i thought that read-only operations to controls from different threads were safe?
I know i can turn this off using Form.CheckForIllegalCrossThreadCalls - but i want to make sure that readonly calls from non-ui threads are actually safe or not?
Im working on a program ( vb 2005 CE framework ). I have mainly two threads, the main one and another one I use it for a different thing.When I tried to update the UI this exception was thrown : Control.Invoke must be used to interact with controls created on a separate thread.well !I have tried to use the INVOKE, but it wouldn't work. this is where I get the error :
Public Sub PaintKeys() Dim tempLevel As clsLevel Dim tempKey As ClsKey
I'm trying to follow the technique discribed by jmcilhinney in this HTML [URL]..I have all the drawing code in the .Paint event. Reading the above mentioned thread I would need .Invalidate(all or parts of the picturebox) AND .Update() in order to repaint (all or parts of) my PictureBox, however in my case it works without .Update. Am I doing something wrong?
Sub laad_leden() Dim myConnection As New connectdb Dim tabel As New DataTable
[CODE]...
While loading the data to the program the window freezes. It shows the progressbar but the progressbar is also freezing. How can i let the progressbar marquee while loading / freezing.
i have me a database (.sdf) which loads its records into a listview. One of the database, due its size, takes some time before everything is loaded. I'm using cursor.wait atm, but it I guess there's a more professional approach.
How do I show a progressbar while loading the data?
Here's a small piece of the code I use to load the data:
The usual VB way to handle a computationally heavy task is to put it in a background worker thread, while the main thread keeps handling the UI.Say for whatever reason I needed to do this the other way around: the main thread doing the grunt work and the background one updating the UI.Here's what I have so far. The only problem is, while the UI window (Form1) does get redrawn, you can't interact with it, not even move or resize it (the mouse cursor turns to hourglass and won't click).
Public Class ProgressDisplay Private trd As Thread Public Sub New() trd = New Thread(AddressOf threadtask)
[code]....
The client will call it like this (actually in unmanaged c++ over COM but you get the picture):
Dim prog = new ProgressDisplay() DoLotsOfWork(addressof prog.update) ' DoLotsOfWork method takes a callback argument to keep client informed of progress
below is a small part of my asynchronous TCP connection code. When I connect I'm passing a ListViewItem as Object parameter. I'd like to update the ListViewItem once the connection has been established or an error occurs. ServerConnect runs on a separate thread, because it's an asynchronous connection, so I can't update the ListViewItem directly.
Does anybody know how to update the ListViewItem?
I looked at jmcilhinney's asynchronous TCP example in the Codebank forum, but it confused me. I don't know which parts I need and which parts I don't need.
::edit::
One more thing. I also need to update the ListViewItem in the Read sub, but I'm passing "buffer" as Object, so how would I update the ListViewItem there?
vb.net Imports System.Net.Sockets Public Class TCP Private Socket As TcpClient
I am trying to write an app that in the thread will do some tasks, the form lokks like this:and what it should is something like this:
- retrieve data, populate a row in the listview, increase the first progress bar - retrieve data, populate a row in the listview, increase the first progress bar - retrieve data, populate a row in the listview, increase the first progress bar
Sub laad_leden() Dim myConnection As New connectdb Dim tabel As New DataTable[code]....
While loading the data to the program the window freezes. It shows the progressbar but the progressbar is also freezing.How can i let the progressbar marquee while loading / freezing.
I want to use a progressbar to show that I'm retrieving the records from the database so that the user wont be confuse if the program is still running or not. Here's my code.
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load cs = "Initial Catalog = KRADB; Data Source = .; User id = lab; Password = 'clrscr2010'" sqlcon = New SqlConnection(cs) sqlcon.Open()