.net - BackgroundWorker.ReportProgress Exception If Run In Another Module?
Mar 18, 2012
My BackgroundWorker works perfectly in my main form frmMain. But when I run the ReportProgress method in another module, I get exception "This BackgroundWorker states that it doesn't report progress. Modify WorkerReportsProgress to state that it does report progress." This IS set to report progress; this works fine when run the same way in the main module.Basically, from a module called by my BackgroundWorker, I want to show progress on my main form.How can I fix this? The only idea I have is to move the code from the module into my main form, but this seems a backward step, which would involve extra work. Am hoping there are easier ways!
Calling code in class frmMain:
Friend WithEvents BackgroundWorker As New System.ComponentModel.BackgroundWorker
Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTest.Click
' Specify that we do NOT want the background operation to allow cancellation
[code]....
Code which generates the exception in separate module Invoices:
Public Function MyTest() As Boolean
frmMain.BackgroundWorker.ReportProgress(0)
End Function
I have a long running process running in a backgroundworker, and want it to report progress to the user, and update a checked listbox as the items are discovered. The reportprogress is called, and the statements executed (placing a break in the reportprogress routine), I can see the control valuse change, but the change is not reflected in the dialog. Here is the reportprogress routine I'm using:
Private Sub BackgroundWorker2_ProgressChanged(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker2.ProgressChanged Me.newlabel.ForeColor = Color.Cyan
I have a Worker.cs in a ZScreenLib DLL that does the following: 1. takes ZScreenGUI.cs (a Windows Form) as an argument 2. creates a Background Worker object and does everything 3. reports progress to the ZScreenGUI form via BackgroundWorker.ReportProgressThe user can create as many instances as possible of Worker.cs class and do the background worker tasks Now I need to create another Windows form called ZScreenCLI.cs and wish to make use of this Worker.cs class because ZScreenCLI and ZScreenGUI are pretty much the same but ZScreenCLI has much less features compared to ZScreenGUI. My question is, how do you manage to report progress to ZScreenCLI? The ReportProgress methods are tied with the controls in ZScreenGUI form. Obviously there is a problem with the concept I am using
Public Function DownloadFile(ByVal URL As String) As Boolean If Not URL = "" Then Dim wc As New System.Net.WebClient() Dim Filename As String = Mid(URL, InStrRev(URL, "/") + 1, Len(URL)) wc.DownloadFile(URL, "C:TESTS" + Filename) Return True End If Return False End Function
I am using that function to download a file. It works. But there are two problems:1# While its downloading the file, the app is sort of frozen like its in a infinite loop.2# How do I get the download percentage?
edit: My resolution to freezing using BackgroundWorker (thread) and using ReportProgress to update the GUI is here: [URL]...
I have recently converted a .net 1.1 web application project into a .net 2.0 webapplication. It compiles without errors, but when I run it in the browser, I get thefollowing error:
Let's say a custom exception is thrown in the DoWork event for a backgroundworker. How do I pass the custom exception to the backgroundworker so that it ends up being the e.Error in the RunWorkedCompletedEventArgs?
This is a strange one that I have so-far been unable to resolve. Basically, when you click on a function icon within the software application it throws up the following message in box:"An unhandled exception has occurred in your application. if you click continue, the application will ignore this error and attempt continue. If you click quit, the application will close immediately"The specified module could not be found. (Exception from HRESULT: 0x8007007E)See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box.
System.IO.FileNotFoundException: The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Universal_Camset.Communications.Transmit(String Data) at Universal_Camset.VCL_MIC_500_Module.VCL_MIC_500.Send(String Data)
[code].....
This happens on two systems; Windows XP SP2 or SP3 - .net framework 1.1 & 2.0 & all necessary patches etc installed. Just can't seem to get around it. What is more frustrating is I have a test rig that has exactly the same software attributes & it works fine on that.I have even tried full clean O/S install with no other applicationms installed & get the same eratta as above.
{"An error occurred creating the form. See Exception.InnerException for details. The error is: The specified module could not be found. Exception from HRESULT: 0x8007007E)"}i got the following error...what is this error??can't figure it out...i m using vb2005..vb.net
I have written a function to generate a random string with specified length. In that I have used 'Random' function. when I have executed it, it is throwing an unhandled exception.Please suggest me some solution. Below is the code I have used:
I have recently updated a legacy compact framework application to support Windows Mobile 6.5 but after going through my backwards compatability testing I have an issue with the WinCE 5 device.When attempting to run the application from both the EXE and the debugger I get the "An unhandled exception of type 'System.TypeLoadException' occurred in Unknown Module." exception but its not giving me any idea which dll / type it has issue with.The changes do work on the Windows Mobile 6.5 Motorola device and the Pocket PC 2003 Psion Device but not on the WinCE5 Psion device.Does anyone have any ideas how I can find out which reference is causing me the issue. I have tried removing the new references to the Symbol barcoding and imaging libraries but I am still getting the same error.OK, it looks like the .Net Compact Framework installation had corrupted some how. I flattened the device, reinstalled and everything appears to be working.
System.ExecutionEngineException was unhandled Message: An unhandled exception of type 'System.ExecutionEngineException' occurred in Unknown Module.There are no further details and the stack trace window is blank I was just wondering how it would be best to work out where this error message is happening - i really don't want to put a million debug.prints in there to work out what functions were last called etc.
I tried to update the button text on a form from a backgroundworker.do_work event, and it failed, with the usual cross-thread exception message.However, by pure chance, I also tried to update text in a system.windows.form.toolstripstatuslabel also from this backgroundworker.do_work event, and it DOES work. Question: why is this? Is it perhaps because theres some kind of implicit shared behaviour with system.windows.form.toolstripstatuslabel?
I am trying to get a progress bar to update on my Form while waiting for a process to complete but could not get my progressbar control to update.
First of, I have tried to fix the problem for a day and a half now looking at various codes and examples in the forums but I'm afraid I probably do not have the necessary VB skills yet to troubleshoot my own code. I believe I will be able to eventually fix this after I am done with my VB book
I've attached the relevant part of my code below and the problem is that I can see my DoWork event firing off and changing the time and percentage that I want to pass on to ReportProgress() and the ProgressChanged handler. However, the ProgressChanged handler is not raised until after my Do Loop is done.
Imports System.ComponentModel . . . Public Class Form1 Private WithEvents TestWorker As System.ComponentModel.BackgroundWorker
[Code]....
Again, I can see the ProgressChange fire but only after my work (diagnostics) is complete so my progress bar is either 0% or 100%. In Dowork, I can verify that the progtimepercentage variable is indeed changing and ReportProgress is called but ProgressChanged is not being raised until after the job I wanted is done.
I have finally figured out how to download a file with background worker and downloader. Now the form does not freeze.. I have only one problem left now... How do I get the progress bar to increment in tandem with the data flow? I have listed my full code below. Towards the bottom where the DoWork() sub resides, I am just a few lines short of this year long goal.
It is possible to catch an exception and throw a new exception which wraps the first exception as an inner exception: [URL] Also, if I call a function and it throws a certain error, but I catch it, will the calling code's catch handler execute? If so, and it is of a higher exception type, is this not wrapping the exception? eg I can throw exception ex of type IndexOutOfRange, log it but rethrow, catch a higher up exception and do something, or I can throw a new exception and wrap an inner exception like:
i'm in the need to start a backgroundworker inside another one.Now...The first one BGW starts a for cycle, and inside this one there is the second BGW that has to upload an image to a server.The trouble is that, the progress event and the complete event of the internal BGW are never called.
I have a large project where we have 2-3 dll projects that are converted from VB6 to VB.NET. We have fixed all the issues that caused compilation errors, and most of obvious issues in running, so now we have basically a program up and running. The exe is created from scratch in VB.NET, using a lot of functionality from the converted dll's (including GUI forms). What I wonder is when I run the program in debug mode, I get a bunch of warnings in the "Immediate Window" saying:
A first chance exception of type 'System.Exception' occurred in Microsoft.VisualBasic.dll
...and some of other type (but most of them in Microsoft.VisualBasic.dll).I was wondering if this is common in projects converted from VB6, or if it is caused by bad design in our code...
When I try to create a instance of a COM class it throws an exception as Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
When I try to create a instance of a COM class it throws an exception as Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
I'm trying to catch a user defined permission exception - i.e. a user does something their level of system access won't allow, permission exception is thrown. My problem is, the exception is caught and then rethrown as a genertic System.Exception.Is there any way I can deduce the original exception type, without resorting to string comparisons, like if ex.ToString.Contains("Permission denied"