.net - Events Raised By BackgroundWorker Not Executed On Expected Thread

Mar 22, 2010

A winforms dialog is using BackgroundWorker to perform some asynchronous operations with significant success. On occasion, the async process being run by the background worker will need to raise events to the winforms app for user response (a message that asks the user if they wish to cancel), the response of which captured in an CancelEventArgs type of the event.

Being an implementation of threading, I would have expected the RaiseEvent of the worker to fire, and then the worker would continue, hence requiring me to pause the worker until the response is received. Instead however, the worker is held to wait for the code executed by the raise event to complete.

It seems like method I am calling via the event call is actually on the worker thread used by the background worker, and I am surprised, since I expected to see it on the Main Thread which is where the mainform is running. Also surprisingly, there are no cross thread exceptions thrown.

View 1 Replies


ADVERTISEMENT

Catching Raised Events?

Apr 5, 2011

I have read the documentation on RaiseEvent and Even but still confused. I am using a class that i call that performs a task on a thread.

vb
Public Property MyVar As String
Public Sub MuSub()

[code]....

View 7 Replies

.net - Record And Replay Raised Events?

Mar 13, 2012

I implemented the communication between two classes by using events in VB.Net.Now I want to store (record) all events that occure and to re-raise (replay) them again later.

Here is what I have already:

Class1:
Public Event Button1Pressed(ByVal sender As Object)
Private Sub btnButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnButton.Click
RaiseEvent Button1Pressed(Me)
End Sub

[Code]...

I could add another handler to the event I want to record, but then in the handler I only get the parameters that are passed to the event and not the event itself.Another thing I don't know how to solve is, that I can't raise an event from an extern class.

View 1 Replies

Event Handler Does Not Catch Raised Events?

May 12, 2011

I have a test class with an implementation similar to this:

public class MyObject Public Event testEvent(ByVal duh As Boolean)
Public Sub New()
'some code here
End Sub

[Code]...

View 4 Replies

.net - Should Events Be Raised In New Threads To Not Block Current Work?

Dec 15, 2009

I'm currently designing an assembly that will be used by third parties. One of the classes has a long process of TCP connections and it informs about its process using events. For example

''# Do stuff that takes some time
RaiseEvent CompletedFirstPartEvent()
''# Do stuff that takes some time

[Code].....

What I've seen if that if the handler of one of those events takes too long (or even worse, it blocks) I can have timeouts and it's hard for the developer to see that one class is not working fine because his handler is taking too long.

I was going to fire the events in a new Thread to avoid this issue but this looks strange to me because I've never seen something like that, what I've seen until now is the developer spawning a new Thread if his handler was going to be timeconsuming. So the question is:

What would you do? Create a new thread or force the user to create his own thread? (Or is -there a better approach that I don't know?)

View 6 Replies

VS 2005 Update UI In Event Raised From Thread?

Jul 3, 2011

I want to raise an event from a non-UI thread where the event will be handled by the UI. Currently, I have to use .Invoke in my methods (which updates UI) called from the event.

How can I raise the event, similar to Background Worker's progress update event, where I don't have to specifically do an .Invoke for UI updates?

Do I wrap the event with a delegate or something? Sample code will be fine though, if the explanation was tedious.

View 9 Replies

BackgroundWorker Thread Communicate With The Primary UI Thread When Encapsulated In A Class?

Jul 1, 2010

A BackgroundWorker thread can pass data to the primary thread. It does it via the RunWorkerCompleted and ProgressChanged events, which I believe run in the primary thread. I would like to encapsulate the BackgroundWorker control in a class so that I can instantiate it more than once. But I don't know how the BGW can then communicate with the primary thread. If the BGW control is within a class, it does not have access to the properties outside the class. In that case, how can the BGW pass data to the thread that instantiated it?

[Code]....

View 3 Replies

Access Objects Of Main Thread From BackgroundWorker's Thread?

Aug 4, 2011

I'm working with BackgroundWorker, I want the BackgroundWorker do the retrieval process of data from database while the user can still do another task on the form. The problem is, after retrieving the data, I can't seem to access the ListView in my Form from the DoWork event of BackgroundWorker, I will populate that ListView using the data I've retrieved.

Consider this example, this is how I'm doing it:

Public Class Test
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

[Code].....

View 1 Replies

Forms :: Run Processes Synchronously From A Thread Or Backgroundworker Thread?

Sep 4, 2009

How do run processes synchronously from a thread or backgroundworker thread? Is it even possible?We have program that allows the user to download several files from a remote server, compress them, and then email the files.It has several long running processes that must run in order. We want these to run on a separate thread so as not to make the form unresponsive. Does a way exist to do this? We attempted a rather clumsy way of approaching this problem by using background worker threads. When each thread is completed and returned back to RunWorkerCompleted, we start another background worker thread and repeat the the next process. It works somewhat but seems to take a lot of resources to run.

View 1 Replies

Stop All Threads Or Just The Thread That The Statement Is Executed In?

Dec 12, 2010

I'm working with vb.net 3.5SP1 /VS2008. I'm familiar with windows threads from C++ but I didn't do it since the 90s.I have 5 threadpool calls (ThreadPool.QueueUserWorkItem) that do some complex work (they read info from different web pages, regular expressions, etc) and each updates different columns in a data-grid view. They pause for 1 second between each web read with thread.sleep (not to overload the server). My issue is that some of the threads do not complete. I get for example 3 results when I should have 8. Sometimes it works fine. This is an older 3.0Ghz HT machine, I want to test it on the lowest common denominator(and that is all I have ). I tried using Monitor.Enter(ListView1)it seems to help but it is hard to tell. I tried using the thread debug window but it is not really helpful, it seems do disappear during execution. If I remove the threads I always get my data. I'm wondering if something is being blocked? Is there a way to debug this?

Also, does thread.sleep(x) stop all threads or just the thread that the statement is executed in?

View 4 Replies

Backgroundworker Return Value To Another Thread?

May 2, 2009

I am using a class with below code, the question is how to update the label's value at UI thread from the backgroundworker?

Imports MySql.Data.MySqlClient
Public Class clsBackGroundWorker

[code]....

View 7 Replies

Cross Thread With A Backgroundworker?

Jan 27, 2010

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..

View 2 Replies

How To Sleep Thread Of BackgroundWorker In WPF

Jul 29, 2009

I wanna sleep a second thread of BackgroundWorker. I tried to use Me.Dispatcher.Thread.Sleep(500) in DoWork event, but it fails.

View 3 Replies

VS 2008 BackgroundWorker Vs Thread

Apr 17, 2012

I have some classes right now that I have that I reuse for Client/Server programming. I'm using Thread in these classes though for monitoring for things being written to the network streams and stuff like that. I'm just not sure if I should be using the background worker class instead. I'm also using TCPClient and Listener classes, should I be using sockets directly? I guess it would all depend on the flexibility I would need in a given application's specs.

[Code]...

View 3 Replies

Backgroundworker Runs A Object's (with Events) Method

Dec 19, 2010

I have a class that is used as follows:

Create an object

Run the RunIt method

The object runs some code and sometimes raises Event1 and sometimes Event2

I want to run that object using Background worker

Programming the app I wasn't sure of the code so I created the VS project shown below so I could make this post

Many questions:

Which routines in the code are run on the worker thread?

Is the object created on the worker thread?

And are its events run on the worker thread?

How to handle the Cancel. The way I did appears tp work except that

e.Cancelled does not return as true (Done is displayed).

And suppose the object didn't have events how would I handle Cancel?

Is there a better way to handle the basic problem?

I wish the code was shorter but wanted to be sure I prsented the problem.

Option Strict On
Option Explicit On
Imports System.ComponentModel

[Code].....

View 4 Replies

.net - Sane Number Of BackgroundWorker Thread?

Apr 27, 2011

I am writing an 'Admin Console' that accesses hMailServer via its provided COM interface. I am using Visual Basic 2010 Express. In one procedure, it scans for the whole accounts. Because it's a lengthy procedure, I shove it into a set of BackgroundWorker threads.

First result: A maximum of 19 simultaneous threads, with 36 seconds total time.Then I rewrote a time consuming thread initialization code segment, and managed to reduce the time required to approximately 14 seconds... but the thread count now hit 330 threads!Will that huge amount of threads be detrimental? E.g., causing out-of-memory exceptions &c. ?

View 1 Replies

BackgroundWorker Get Values From UI Thread While It Is Running?

Jan 2, 2012

I am using the BackgroundWorker to do the heavy tasks so the UI thread doesn't get blocked. While the BackgroundWorker can send values to the UI thread using the progress-scheme, how can the BackgroundWorker get some values FROM the UI thread?

Either by asking it or simply by the UI thread sending some values to the BackgroundWorker?

Just accessing a variable of the UI thread like UIForm.x within the BackgroundWorker does not work, it does not seem to have access to the UI variables?

View 1 Replies

Backgroundworker Thread Causing UI To Hang?

Aug 29, 2010

I have a background worker that's checking the status of four services on a remote server.This is setup on a timer (5 Seconds) as below. For some reason it's hanging the UI thread causing the application to 'lock' for a second each tick, I cannot work out why?!

Private Sub ServiceTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ServiceTimer.Tick
_ServiceBGWorker = New System.ComponentModel.BackgroundWorker()

[code]......

View 2 Replies

Sendkeys On Backgroundworker Thread Not Working?

Mar 29, 2010

Well to simplify it, whenever I use sendkeys from a background thread it just doesn't work. I even created a textbox, button, and backgroundworker with the following code:

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

[Code].....

View 4 Replies

VS 2008 BackgroundWorker Thread An Updating UI?

Apr 3, 2010

I'm running some tasks on a BackgroundWorker thread and needed to display the current tasks in a label.Before adding the label, the tasks were completing just fine and the UI was responsive.Once I added the labels, the UI has become unresponsive. The issue, I believe, is the Invoke property.I've declared all my tasks, including the updating, in a sub and am getting the Invoke property of the label each time, in order to set the information.The following is an example of what I'm doing:

VB.NET
Private Sub Test()If lblTask.InvokeRequired = True Then Dim mi As New MethodInvoker(AddressOf Test) lblTask.Invoke(mi)

[code]....

View 7 Replies

Use Backgroundworker In A Class And Generate Events For Client Application?

Sep 14, 2009

I have designed a class for posting data to server, which is a time consuming task so that i have used background worker in my application. instead of repeatedly using backgroundworker in my application, i decided to add it to my class and generate two events PostWorkerReportProgress, PostWorkerComplted for my application

View 1 Replies

Backgroundworker - Cross-thread Operation Not Valid

Jun 13, 2010

Yes, I see what you mean. But I had to do it that because I tried to do it this way:

CODE:

but its says "Cross-thread operation not valid: Control 'RichTextBox1' accessed from a thread other than the thread it was created on."

View 1 Replies

C# - Difference Between BackgroundWorker And System.Threading.Thread

Oct 24, 2009

What is the difference between creating a thead using BackgroundWorker and creating a thread using System.Threading.Thread?

View 2 Replies

Forms :: New Thread Versus BackgroundWorker Updating UI

Aug 24, 2010

i have lurked on these forums before and finally signed up..i have a situation that, after days of searching the web, i have not been able to come up with a solution for.i have to fire off a function that takes a large amount of time (writes to database, creates files, etc etc)this function is a non-shared function of a class. if need be i could make it Shared.[code]the code works great, but what i need to be able to do is update a form with a progress bar as the job is processing.all of the examples i have seen that do this are being called from within a Windows Form and they access the form directly - i cant do that in this case. my form needs to be 1 form for 1 job being executed - can process multiple jobs at one time and thus i need multiple forms.i have tried making the form part of my delegate class but since it runs in the same thread the effect is it "freezes" until the job is complete.i have just started looking into using a background worker but again, all examples i have seen use the component as part of a form - that wont work for me.

View 3 Replies

VS 2008 Add Information To A ListView From A BackgroundWorker Thread?

Nov 30, 2009

I'm trying to add information to a ListView from a BackgroundWorker thread. I thought I could do this in this manner:

vb.net
Private Delegate Sub _ListView(ByVal lvi As ListViewItem)
Public Sub test(ByVal lvi As ListViewItem)

[Code].....

When I attempt to run the "test" sub the BackgroundWorker, I get an error:

Argument not specified for parameter 'lvi' of 'Public Syb test(lvi as System.Windows.Forms.ListViewItem)'.

Is there something I need to specify when declaring the sub, or in the sub itself?

View 8 Replies

VS 2008 Updating A ListView From A BackGroundWorker Thread?

Sep 20, 2009

I'm using the following to check the state of checkboxes and then activate some public subs based on the checked state of the checkboxes:

vb.net
Public Sub TestSub() If Me.CheckBox1.InvokeRequired Then Me. CheckBox1.Invoke(New MethodInvoker(AddressOf TestSub)) Else Begin() End If End Sub

Within the Begin sub, I have code that performs specific actions and then updates a ListView with that information.As far as I can tell, the actions are being performed, but the ListView isn't being updated with the info.I'm calling the Test sub from a seperate form, within the BackGroundWorker's DoWork event.Would I have to check the InvokeRequired property of the ListView as well?I'm looking more into the documentation of the BackGroundWorker.

View 8 Replies

Wpf - Kill A BackgroundWorker In .net If Thread Hangs Using COM Object?

Jun 10, 2012

I have an application that interacts with third party COM objects. A method of the COM object that I call will sometimes stop responding. I created a Backgroundworker thread to call the function and I am trying to monitor it from my main thread to kill it if it hangs. I have additional code (not supplied) that tracks the processing time using system.timer from the main thread and I raise an event if it exceeds my threshold (this part is fine). This is when I want to kill the thread and stop code execution. The problem is.. if I use the cancelasync method it will just pend since the code execution is stuck on the function call.

The particular function call in the code snippet that hangs is "objCOM.SendDataToServer()". It typically takes 1-3 seconds to return, but if it gets no response it will just hang indefinitely and won't return at all (no errors just hangs).. there is no timeout... and since I don't have access to the source function I cannot supply one. I tried the .dispose() method of the thread, but apparently that doesn't kill it and neither does cancelasync. I just need help figuring out how to KILL this thread so I can reset the server connection and call the function again.

Public Class COMobject
Private objCOM as new acs.manager
Public Sub CallComFunction()

[code]....

View 1 Replies

Creating A Webbrowser Control In A Background Thread In Backgroundworker?

Sep 23, 2009

Is it possible to create a WebBrowser control in a background thread in BackgroundWorker?

Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Using web1 As New WebBrowser[code].....

Does anyone know a way to create a background WebBrowser? I would like to do it to extract info from websites then spit out the various HTML DOM arrays

View 4 Replies

VS 2008 Accessing Condition Of Checkboxes Within A Backgroundworker Thread

Sep 8, 2009

I have a form with Check Boxes on it and a second form that holds functions and a Backgroundworker.When a button is pressed on the first form, the second form loads and then runs the functions that relate to the appropriate Check Boxes.Doing it this way causes the second form to become inaccessible. I decided to run my code in the Backgroundworker's DoWork event and then call the RunWorkerAsync method in my form's Activated event. Before using the Backgroundworker, everything worked fine and now it doesn't.I assume the issue is with the Backgroundworker not being able to access controls on another thread.In debug mode,it automatically throws an exception, but doesn't error out when using the Release version, making me assume it's a legal call. But, if it's a legal call, then why can't I access the controls?

View 10 Replies

VS 2010 For Loop Inside Backgroundworker Gives Thread Error?

Jul 5, 2011

I have a backgroundworker that is downloading data from different webpages and process them to a datagridview.I get the Cross-thread operation not valid error on the first For loop.

Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
dim i as integer
tot = (numPostnrTo.Value - numPostnrFrom.Value) / 10

[code]....

View 12 Replies







Copyrights 2005-15 www.BigResource.com, All rights reserved