Referencing An Object (class) Within A Thread Fails
Jun 8, 2012
Referencing an object (class) within a thread fails
I have an object ("a vb class") that needs to run on a separate thread and communicate with the U/I.
Even using sample code, I cannot get the object to run within a thread. I demonstrate this problem with two examples. The first calls a function within the form and it works perfectly. The second creates an object and performs the same calls, but fails.
example #1 [working] (Called within a form)
Private Delegate Sub FuctionToBeRunInThreadDelegate
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
[Code]....
SUMMARY: When the thread creates the object, it appears that the object is not actually running inside of a thread or else form.InvokeRequired would be true. I have other more complex examples where this is strongly verified and evidenced, but I provided these two as a very simple demonstration of my problem.How can I have a thread "own" a series of individual objects so that the objects are run asynchronously and can independently report back to the U/I?
I am instantiating a form object in my code behind the dataset just to access some form level variables and to occasionally set a label in the navigator bar. Recently in the b2 Team version of VS2010 there are some strange errors thrown in the immediate window and then I'm tossed out of debug mode and back into the IDE. This code has been operating for some time in this project without this behavior. A team member has just reproduced the behavior in his development machine also.The error that starts the shutdown of the debug instance is this: Control accessed from a thread other than the thread it was created on.
I have am using a Twitter streaming class library, and would like to update a listbox when a new tweet is posted. I have it all set up to the point where a message box will show when a tweet comes in, but when I try to insert this tweet into a listbox I get this error: The calling thread cannot access this object because a different thread owns it. I don't know what I need to do in order to insert this tweet.
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?
i want to have some web browsers which navigate wile the thread is running and my problem is that I want to use a web browser object from .net in a thread. when i put a webbrowser object in my form, called webbrowser1, i cant reach it in the thread's operation(start thread). when i type webbroeser1 in the thread it doesn't undrestand what webbrowser1 is.
Ive have a listview on my form and need to populate it with data from my Table called "tblCustomers". However I need to only retrieve records based on field that is populated with data called "Joe". In order for the SQL syntax to retrieve the name "Joe" then the SQL syntax needs to reference the Label on the form called "lblName" which will have the name "Joe" as the caption.
How can my dataset have SQL data that references my label object on my form?
I have a VB6 app that I'm updating to .Net. This app interfaces with PeachTree Accounting through there type library, which I have a reference. When I try to create a reference to Peachtree in .Net,
1. Select References from Myproject 2. Click "Add" 3. Select the "COM" tab 4. Select the "Peachtree Accounting 17.0 Type Library"
When I add the reference, the Path says "<The system cannot find the reference specified>".
There is something different about the way the path is listed. All the other paths are listed like "C:Program Files..." but the Peachtree library is listed like "C:PROGRA~1SagePEACHT~1PAWLegacy.dll"
This is how the old DOS use to list names longer than 8 characters. In my VB6 app the reference path is "C:Program FilesSagePeachtreePAWLegacy.dll"I tested other references with simular paths like "c:progra~1..." and they work fine. It's probably something else. I'm fairly new to .Net so can anyone point me in the right direction?
how to create a class yet, and I think I need to learn how.I am wanting to shorten my code in a form, thinking of creating several classes to do so.Lets use a Listview as a reference if you dont mind.Say there is a listview, you have a numeral amount of if statments to fill by. Is there a way to create a class(is this the way to go) so that you can open the class to modify that specific block of code? Example of questionYou have multiple items you need to add for each if statement. Animal as a group Dog as an item 14 years as a sub item Cat as an item 11 years as a sub itemIs this the way to go, if so how do you create a class and call it from a form?Davids Learning
I am building application that will be hosted as a web service. This app takes an employeeID and returns an employee object that contains lots of info regarding the employee. (name, status, full-time/part-time, etc)I want the two existing apps we have (and more to come) to be able to call a method that the web service will have and return the employee object. (also at time this web service that returns the object may have new fields added to it - Pay rate, etc)How would I go about creating a new object from this web service reference in the existing applications.Would I decalre it like Dim Employee as new emp_webservice.employee? And then be able to use this object within the app? Or would the better practice be to also included the same class files? It seems like this would not be the way to go, since if I make a change to that class I then have to make it in all places.
when using variables in object names.I have a Public class which is called "Tank".In that class, there is a public property called "direction" of an integer type.I keep getting the error:
"Tank is a type and cannot be used as an expression"What I'm doing wrong here ?
Public Class mainroutines() Create Instances of tank Private Tank1 As New Tank()[code]....
How do you reference a variable in another Class? Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load TextBox1.Text = "Class1_Text" ' Would like to replace w/correct code End Sub End Class Public Class Class1 Public Class1_Text As String = "Class1 Text" End Class I can reference the Form1 data in Class1 but not vice-verse.
I have created an SNMP class. And then I want to test this class, so I create a program which imports this class ... Imports SNMPClass Module Module1 End Module Public Class SimpleSNMP Public Sub Main(ByVal argv As String()) [Code] .....
I got an error in this line Dim conn As New SNMP() Which says "SNMPClass.SNMP is not accessible in this context because it is friend".. I am using Visual Studio 2008
I'm working on a legacy vb.net application that does most of its work using inline code ( Within that script I need to access functions from a third party .net dll. The dll(s) themself are stored in the GAC. Before I started the page looked something like the following
So Im iterating through the properties of a class. For each property Im iterating through a datatable until I find a column name with the same name as the property.
No worries so far, here's the isse: Once I've found a match I want to set the class's property to the value in the datatable but I'm having difficulty referencing the property as it has to be done through a variable.
Code: Dim per As New Person Dim t As Type = per.GetType For Each p As PropertyInfo In t.GetProperties
Often I have a list of object A, and I have another object type B that needs to hold a reference to one instance in that list. So, as far as I can imagine, it's three ways to hold such reference:
1. Make B hold the instance variable of type A 2. Make B hold some other key/ID of the A instance 3. Make B hold an integer of the list index of the A instance
I guess 3 is quite limited, and mostly suited for use locally inside a method, in a for-next loop etc. But with the other two I tend to have the feeling that I should use 2) over 1), as I believe I shouldn't "duplicate" the object.. But wonder if that is a mistake. I guess it's only holding a reference to the stack memory, so it doesn't really make any overload compared to holding just an integer key/ID..
Further my thought is that with 1), I don't have to loop through the list to get the correct instance, as it already holds it. However if A changes, it may not be reflected in B.A, if the A has been given a new instance, so then 2) would instead give access to the updated object A. So perhaps if A is a "dynamic" object that may have been reinitialized (if that's a word), I need to use method 2). However if it's a type of object that is only changed when for example the user opens a program settings form, and this setting form only changes value type variables, then perhaps 1) is appropriate?
This is kind of the case I have some times, and I wonder if I should then use 1), as it doesn't require me to loop through the list by key/ID. It makes other object hold the full reference, which is not really necessary, but maybe still more efficient? Although at the same time, maybe I shouldn't really care much about looping through an object list either, if the list is not very big.
I have a collection class, say ITEMS, that inherits a Dictionary (of String, SINGLEITEM). From the SINGLEITEM class, I would like to reference a property in the parent ITEMS class, what is the best way to do this? For example, say the ITEMS class has an IsDirty property and I would like to set that if ANY of the contained SINGLEITEM objects is modified, what's the best way to go about doing this?
I know I could add a reference to the collection class in each SINGLEITEM class (since I override the ADD method, I could make this assignment), but this seems like overkill.
I have an object that is defined as a global variable based on custom class. Within that class I have an event that gets fired a certain intervals. These events are fired on the same thread as where the object is declared. How do I create a global object, but have the events within that object fire on a separate thread?
I have several sets of similar objects (labels, progress bars) on a form in Visual Basic 2010 on Windows. In my code, I have collections that contain data, which needs to be pushed into the value/text property of each.
I would like to get a solution similar to PHP in that I can assign values somewhat like:
For ID as Integer from 0 to count(collectionExample) lblExample{ID}.Text=collectionExample(variableID)
...and as such to loop through so each of the different lblExample's were updated to their corresponding value.
The issue I have come to is that I cannot seem to reference an object on the form using a variable. I have also tried using something like
CallByName("lblExample" + variableID, "Text", CallType.Set, exampleCollection(variableID))... however I still can't combine the string and variable to reference the object.
Any solutions on referring to objects in VB2010 by combining a string prefix and a variable string identifier, similar to PHP's $variable{$variable} approach?
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?
Enviro: 2007 Exchange Server, 2 Intranet servers (1 deploy, 1 dev) running .NET 2.0 app - all within same network / behind firewall. I am working on a legacy app by our previous web guy, when our sysadmin upgraded to exchange 2007 and put it on a new server all of the mail functions in old app broke. Had to upgrade to .NET 2.0 (from 1.x) and nothing worked untill I tried new SMTP code in a local function in the codebehind of a page of the app instead of calling a class, as follows:
Function SendNow(ByVal strFrom As String, ByVal strTo As String, ByVal strSubject As String, ByVal strBody As String) As Object Dim msg As New MailMessage() Dim smtp As SmtpClient
[code]....
So the above works fine, in that file. The problem is that the app was designed to call a class that resides on the dev server. When I move this same code into the class on the dev server I get transport errors. I think this has to do with the fact that we're using integrated authentication with impersonation=true and it seems to get dropped due to the class being on a different server (even though it's behind our firewall).
I could either try moving the classes to the production server or somehow keep the authentication in the class working through the hops. Either way I need to keep the class because it's referenced all over the place (in more than just this app). I am not that savvy in .NET and I cannot figure out where the setting is within the app that defines where the class is imported from. It just seems to be available no matter where the app is deployed. (Working files are on same server as classes, then publish the app to production server).
My application's binary serialization was working well up to today (this is not a released app yet - still in development). I have a "Project" class that is the top-level class of a hierarchy of other classes related to its function. And before you think it, yes, all of those classes are marked as serializable. Infact, they all were being serialized before today.
I have one event on the Project class that assists in informing when the project's save status has changed (i.e. new, modified, saved). This event was added today along with some events on the other classes that filter up to the Project class (the project needs to be told when its objects have been modified). I unfortunately added all of this at the same time so I can't provide any incremental details as to when it stopped working, but when I try to save the project through my binary formatter it tells me that my main form is not marked as serializable. Well, yeah... of course it isn't! it shouldn't need to be because there is no member of my classes that even mentions the form. But for some reason handling the Project's event on the form triggers this error.
Serializing the form is not a solution. Neither is not being able to handle my Project events. If I comment out the handler it works fine -- and I don't even have to remove the WithEvents keyword on my form's Project variable. Now that I write that I'm speculating that it may have to do with the event being raised as a result of the serialization (occurs when the save button is clicked).
I am trying to save a new object to the database using petapoco.I have an object that uses a Guid for the primary key.Here is an example of the objects primary key property.
<PetaPoco.Column()> _ Public ReadOnly Property Primkey() As Guid Implements IStandardDocument.Primkey Get
The sql that is generated is an update with a primkey of 00000000-0000-0000-0000-000000000000 instead of an insert. So new records are never inserted.If I have an existing object with a valid guid the update and delete all work correctly.
I'm having problem regarding session items. Before I use them, I want to check if they exists, but using this codes gives me error:[code]I think Session("SomeSessionItem") tries to acquire the value of the session item. If the item doesn't exists then it throws exception. But how do I check if a session item exists before using them? I have a page Home.aspx.In the Home.aspx.vb, I instantiate a WebUserControl SomeControl.ascx. Note that in Home.aspx.vb event handler Page_Load I can use a condition to check session without getting an exception.Inside SomeControl.ascx.vb I'm trying to access the session, here's where the exception occurs.
I have an application that creates desktop shortcuts. To do this I have to reference the Windows Script Host Object Model. When I add it as a reference, it always creates the DLL, Interop.IWshRuntimeLibrary.dll, in the objx86Debug directory, then references itself to it, rather than looking at wshom.ocx. Even if I add reference wshom.ocx it reverts to saving the file in the objx86Debug directory. The problem is if I move my application to another computer without that DLL being present, the program fails to run.