.net - WPF BackgroundWorker - UI Locks Up Trying To Instantiate Object From External Class?
Apr 13, 2011
I am trying to run a backgroundworker to load data from my DAL (which is available in another class). I want to keep the UI available and not have the "locked up" feel while the object is loading.When I create a simple backgroundworker and Sleep the UI stays responsive and my controls can be updated after the sleep. As soon as I replace the sleep with a call to instantiate the object from my DAL, the UI locks up. Is there someway I can instantiate this object using the background worked and keep the UI responsive?
When the situation object is instantiated it could take several seconds for it to load completely, during this time is when the UI is locked up... It does eventually load just fine.
Private WithEvents backWork As New BackgroundWorker()
Dim sit As Situation
Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnLoad.Click
dim myCollection as new Specialized.StringCollection dim myFoundThings as new ArrayList dim index as Integer dim newResultMemberName as String
[code]....
This is part of some code that will run without user interaction once it's spinning away, and I need to create a unique object from some items found in a StringCollection, naming the objects using information found in the strings stored in that StringCollection.
I'm trying to decide whether to get a value, call it X, in my class through a read only property or through a function. Normally I'd code it as a property except in this case the GET involves doing a lookup to a sql table. So there's way more overhead than a simple RETURN X. So my question is, when I instantiate a new object from my class, are all the properties calculated at that point, so that the sql lookup will occur too? Or is the property only evaluated when I actually reference it in the calling code.
i've got a generic class for xml serialization and deserialization.
Public Class clsXMLHandler(Of T) Public Sub serializeFromObject(ByVal filePath As String, ByVal [object] As T) Dim creater As New FileStream(filePath, FileMode.Create) Dim xml As New XmlSerializer([object].GetType) xml.Serialize(creater, [object])
I see a sample code that an object is instantiated within the class definition block. But when I test the folllowing, I got error "Process is terminated due to
I have a backgroundworker that needs to contact a webservice. But when I run the background worker it just hangs forever at the line where I call a method of the webservice. I suspect this is because the webservice is defined at class level.
I have an Account Class that is able to create notes(Class), however i am able to create the note object by itself which is not the desired outcome, i want only the account class to be able to create the note object. Another Example would be, an order item should not be created without an order class. But how do you enforce this in vb.net.
I'm trying to get the ATM Class to Instantiate on the Form class.
[code]...
ISSUE = " 'ThisATM' is used before it has been assigned a value. A Null reference exception could result at runtime"
The Other problem i am having is with a class in the program called CardReader. What am i supposed to type to let the code below be able to "read" the read function on the Form1?
i wanted to do something simple that sort of replicate an object:
public function clone(byval realcopy as object) as object return new Control ' something like this works, however i want to return the type of realcopy, which may not be a control end function so i tried this:
public function clone(byval realcopy as object) as object return new gettype(realcopy.gettype) end function
I have created a WebSite with a folder called Classes. In the folder, there is a class with a Public Shared Function. How do I go about instantiating that class so I can use that function on a web form?
I am having some real issues with this one. I have a class which contains two other objects...but I cannot seem to instantiate those sub objects. Here is the code for my class:
I have an application which I am trying out on machines without mysql. The app runs fine on my local host however when I try to use the application on another machine I am getting the following error:
Access denied for user 'root'@'localhost (using password: YES)
Then I get a .net framework error
System.NullReferenceException: Object reference not set to an instance of an object.
I thought I had exported the DB but I was left with a mysql file which I placed in the bin directory.
this is what i want to do. I have a class library project into my solution. Into it i have a class. I want that class to be instantiated as soon as the solution starts. So it can be accesible from the other projects in the solution like this: Namespace.InstanceOfTheForm.Property Is there any way to do that? or something close to that?
I am currently playing around with VB.Net using Visual Studio 2010 (.Net 4.0) and I need your help to create a collection class (let's call it 'cl_MyCollection') with a constructor that accepts two arguments:An SqlDataReader object Some means of pointing to a custom class I have created.I have five database tables in SQL 2000 and five VB.Net custom classes.Each custom class contains a variable for each field of the table the class represents.For example:"tbl_User" has 2 fields "User_ID" and "User_Name" and tbl_Family" has 3 fields "Family_ID", "Family_Name" and "Family_ Location". [code] Fixed typo, the select case now points to the second argument ('selectedClass') as originally intended.
I am creating user accounts in Active Directory via vb.net.Once the account is created I need to assign permissions to the "homedirectory" that I have assigned in Active Directory.I have access to the Active Directory name attributes but I need to convert these to a NT account format ( DOMAINAccountName ) to add security via the DirectorySecurity AddAccessRule method.Is there a way to instantiate the NTAccount class from an Active Directory Entry? I'm not sure if this is necessary I just found that class and it looked like a good fit; a simple routine to create the DOMAINAccountName from the Directory Entry attributes like cn might also suffice.
I am considering a piece of code that will manage access to a collection object from multiple threads - add, update, remove, clear. OK ... so I have put a sync lock within each method, but what is not clear from the MS documentation is exactly how the sync lock is behaving. Is it locking the piece of code it wraps? Or is it locking the object? And if it is locking the object a private static object should lock out any code locked on the object within all instances of the object? i.e. if an add operation is underway, an update, delete or clear will wait for the lock to be released.
Finally, if I have multiple threads contending for the sync lock, how is the release managed? First come, first serve? random (from my p.o.v)? Is there a chance that two separate threads could blunder into 'locked' code simulataneously?
In C# .NET 3.5, is there a way to instantiate an object given its string name? For example, suppose I have a DLL (e.g., MyClass.DLL) which contains type MyClass. Is possible to write something like... Object myClass = SomeMethodToInstantiate("MyClass"); // ? Is it possible to do this in VB .NET 3.5?
Recently, I was experimenting with accessing classes within other classes. From an earlier post, I learned some things about class architecture, but don't think I understood it as well as I HOPE I do now.
I came to the following assessment:If you require an external class to be accessed internally within ANOTHER class, there must be an internal "placeholder" for the immediate values contained in any instance of the external class. That internal placeholder is a structure declaration that has the same architecture as the external class, AND the names of the external class and the internal structure must be identical.
I am somewhat new to object oriented programming and am attempting to flatten a Linq object hierarchy by using a shim class.how to initalize a derived class with property values from a base class?I have two objects, a base object with about 100 properties, and a derived object which inherits from the base object and adds a few additional properties beyond those of the base object. My simple constructor creates the derived object, but I am looking for a way to initialize the derived object properties with values from the base object.Right now I am using reflection to iterate over the properties individually and I suspect there may be a better way. The following example shows my shim class constructor for the derived class, and two properties:
newProperty1 - a new string property of the derived class
flattenedProperty2 - a new string property of the derived class, copied from a 2nd-level object of the base class
Code example:
Public Class derivedObj Inherits baseObj Private _newProperty1 As String[code].......
Is this the correct constructor approach to flatten the object hierarchy using a shim class? My second question relates to initialization of properties in the derived class. The constructor above creates the derived object, but what is the best way to initialize the derived object properties with values from the base object? The following code uses reflection to iterate over the properties individually, but I suspect there may be a better way.
Code example:
' property names are in the string array fieldNames
'baseObjQuery is an ienumerable of baseObj
'derivedObjList is a list of derivedObj[code].....
Is there a simple way to initialize values for the properties in the derived object based upon the values of the common properties in the base object?
I have a GUI class and a database class. I do something like: Dim db as Database = getDatabaseObject(logTxtBox) db.executeNonQuery("some update command here")
Within executeNonQuery I connect to the db, execute the command, disconnect and catch the exceptions. logTxtBox is the GUI txt box I want log messages written to. Currently it writes something like:
Connected to DB successfully Executing "some update command here" Excepetion: ........ Disconnecting from DB
I feel like this isn't the best structure for my logging. As soon I kick off executeNonQuery with a BackgroundWorker instead of with the main GUI thread I cannot access the GUI's logTxtBox from the BackgroundWorker's thread. Is there a better way to implement this kind of functionality?
I have a requirement where I need to have a "type safe" way of accessing property names, without actually instantiating an object to get to the property. To give an example, consider a method that takes as arguments a list of IMyObject and a string that represents a property name (a property that exists in IMyObject).
The methods implementation will take the list and access all the objects in the list using the property name passed... for some reason or another, we won't dwell on that!!
Now, I know that you can do this using an instantiated object, something like ...
Dim x as MyObject = nothing Dim prop As PropertyInfo = PropHelper.GetProperty(Of MyObject)(Function() x.MyProperty)
Where my helper method uses reflection to get the name of the property as a string - there are numerous examples of this flying around on the web!
But I don't want to have to create this pointless object, I just want to do something like MyObject.MyProperty! Reflection allows you to iterate through a types properties and methods without declaring an object of that type... but I want to access a specific property and retrieve the string version of its name without iteration and without declaring an object of that type!
The main point here is that although I am trying to get the property name as a string... this is done at run time... at compile time, I want this to be type safe so if someone changes the property name, the compilation will break.
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()
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
I am trying to create a tool which executes some oracle procedures and telnet commands. Besides this Job my tool also needs to update a counter in some table in oracle db at regular intervals(10 secs as per current settings). So I used backgroundworker class in VB.NET to implement this back ground job of updating the counter. My problem is I have put logs at every possible exit of the backgroundworker_dowork functions but still this logic stops working after some time --7-8 hours. I am not able to understand when/where/why/how is it stopping? I am saying logic has stopped because it stops incrementing the counter. And am saying it is exiting abruptly because in _RunWorkerCompleted, I have written a log and closed the application but nothing comes in the log and application is not exiting.
Private Sub backlogicthread_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles backlogicthread.DoWork WriteLog("Background worker", "entered") dbbackcontrol = New OracleConnection(odbcBill) Dim dr As OracleDataReader [Code] .....