<UnmanagedFunctionPointer(CallingConvention.Cdecl)> _
Public Delegate Sub DeviceDetectionEvent(ByVal YasdiEvent As YASDIDetectionSub, ByVal DeviceHandle As UInteger, ByVal param1 As UInteger)
I thought that when a variable went out of scope (like a variable declared within a method - when you exit that method the variable is out of scope) then it was eligible for garbage collection and when it was garage collected the Dispose method is called on it. Now I know that it does not get disposed immediately but I assumed it would be basically as soon as the process starts to take up quite a bit of memory.However, I found that my app's memory usage seems to constantly increase when I dont manually Dispose of a specific method local variable. Of course its good practice to call Dispose and ordinarily I would but I just didn't realise that this particular class actually implemented IDisposable. The class in question was the System.DirectoryServices.SearchResultCollection class, and I was looping through the items in it like so:
I'm creating a windows forms program and have recently noticed a large amount of memory slowly being eaten by the application. I went through my program and tried to tie up as many loose ends as I could in relation to object creation but noticed that the program would still keep memory for every form loaded until it eventually crashed.
I decided to make a simple test program which sole purpose is to pop-up a new form with a few controls, wait for 200 milliseconds, then close the form and repeat the process 30 times every time I hit a button. I found it caused the same behavior, even with the only new object creation being that of the form. So, I decided to manually invoke the garbage collector in a subroutine which handles the formclosed event. During tests I would get some memory back occasionally, but not enough to make a difference in the long run. So I start setting the form variable to nothing before I called GC.collect(). The program will initially eat a few 1000K of memory before leveling off and using only 20-40K for every 30 forms created.
Now what I'm wondering is, what is the point of an automated garbage collection system if it requires constant manual evocation and explicit dereferencing of all new objects to be effective? Have I completely lost grasp on the scope of VB.Net forms and it simply never marks forms as available memory to be cleared?I would have thought object memory references created within a form would be marked as usable when the form's close or dispose routine is called and no references to objects created within the form exist anywhere outside the closed form.
I am trying to create radiobuttons, and then create code for them after they are created. I have the code to create the radiobuttons. What I want to do is create a sub for the event of changing the check value for the radiobutton. Or to have the check value recognized by a button click. For example, you click the button and if the first radiobutton has the circle filled then a msgbox comes up and says hurray. My code so far is this:
I am using a function from a dll in unmanaged code that requires a callback to my managed code in Visual Basic 2010. The callback is asynchronous and is called continuously over the life of the application. What's the best way to protect the callback function from the garbage collector? Right now it is being collected after several dozen calls from the dll.
I've been doing some reading on garbage collection in .NET and I was hoping for some clarification. So, as I understand it if I declare a public shared class variable, the GC will never get rid of it. Is this correct?Also, what then of private variables? Take the following example:
public class myClass private shared myString As String public sub ChangeString(newString As String)
Is the memory from primitive data types (int, char,etc) immediately released once they leave scope, or added to garbage collection for later release?
consider:
For x as integer=0 to 1000 dim y as integer Next
If this doesn't add 1000 integers to the garbage collector for clean up later,how does it treat string objects? would this create 1000 strings to clean up later?
For x as integer=0 to 1000 dim y as string="" Next
How about structures that contain only int,string,etc... data types?
Here's the scenario, winforms application, monitoring via Task Manager Processes Tab.On initial launch spins up to ~61,000K (initial data grid and data loads)If I minimize the application, not touching or doing anything the Mem usage drops to 1,380K.When I restore the application is spins back up to only 5.8K
So my question is, does the minimize send some internal message to clean up resources since the application in question is not in focus?The first app I noticed this in happens to be VB.NET, but I've observed the same behavior in my main C# winform applications.
If I use a single variable of type Excel.Worksheet to reference Worksheet1, and then change it to Worksheet2, Worksheet3 and so on, is it adequate to simply do "Marshal.FinalReleaseComObject(worksheetVariable)" once at the end? Or would I be left with some references still in memory? In other words, do I need to do a "Marshal.FinalReleaseComObject" before each re-assignment?
I have a theory that the CLR garbage collection mechanism means that I can get away with circular references in my object hierarchy without creating deadlocks for teardown and garbage collection. Is this a safe assumption to make? (Target language VB.NET)
I have an application that is on a server running. The way I have it setup is I put it on the Windows Scheduler to run at certain times. We now need to run it constantly on the server. I change the code to put in a loop until I pause or stop it. One issue I have found is that I can kick it off but when I close out of my remote session the application stops.
How do I keep my application to keep running even after I sign out of RDP?
I was wondering how someone could stop a For loop in the middle of it, according to parameters. I have tried but cannot find a solution that works, I suppose an example of this would be if a loop were increasing a label by 1 from 0 to 100 and the user sets it to end at 57 or any number in between and when the loop reached the number to stop.
I need to be able to edit vb.net code using visual studio without stopping the debugging executable.How can I go about doing this? If it's impossible, how can I code and reload that code without stopping the executable? I know of scripting languages like Lua, but I fear the implementation of another language within the VB is unnecessary to save me the trouble of stopping the executable. The issue is that starting and stopping this executable can take a very long time, and I need to be able to edit the code quickly and frequently.
I wrote a custom windows service (VB .Net) to run some processing on data files in the background of one of our servers. The service basically finds the next file to process, breaks it apart and makes a PDF or two - nothing super complicated. It utilizes a timer, if a file is not found, it waits a bit and checks again (repeat indefinitely). The service has run for a week or two with no issues/pausing/stopping. I have plenty of error handling for this and I have not been able to break it... until today.
I've just installed Visual Studio 2010 Express on a new laptop running Windows 7 64 bit.
When I debug a VB project and an error is encountered a message is sent to the immediate window, but execution is not halted. This means I am unable to look at variables etc.
I was woking on a windows app today when my errors were no longer being displayed as they usually would, instead the debugger just jumps out of the method. It works in other projects, I have put this: 'Dim i as Integer = "A"' in as my first line to try and raise an error but it just exits the sub on that line.
The output window makes a note of the exception but the usual popup trace does not appear, any ideas how I get it back??
Basically I am trying to get my timer to stop when it reaches a randomly generated number.
I have dimmed num2 as integer (num2 is timer) I have dimmed num3 as integer (num 3 is random number) I have done num3 = randNum.Next (0, 8)
My timer is working perfectly and counts from 0 -8. My randomly generated number works too, so how do i get the timer to stop when it reaches the random num?
I have tried; if num2 = num3 then timer1.enabled = false But that didn't work
Since the coming of Windows7 at our office we have sometimes the issue that the print spool is crashing.Users don't have admin rights to restart the service so that leaves them only at restarting their computer as solution.Which costs alot of time... As we cannot find a final solution to this problem I've begin to write a small tool so they can restart it..I've only hard code a local admin account in the source for this operate for them..
I am writing a little app to take over from Active Desktop as we are using Win7.
I am having problems getting my form to stay open, if the user hits the "Show Desktop" button the form minimises. I need this to stay open at all times in the back ground.
I have disbled the minimise button to stop the users using it.
how I can stop this from happening or if I use a timer to check the windows state it apears normal as it looks like the "Show Desktop" button does not actually minimise the window!
I've heard that the c# garbage collector can be 'more aggressive' than it's vb.net counterpart. Is this true? Are there any other differences in how garbage collection is run in vb.net vs. c#?
I'm trying to introduce delay to my code so that it would read in the noise or garbage data. I'm receiving the data from RFID to pic thru RS232.Is there any simple delay that i can use? I seriously don't understand threading.
If I want to narrow scope of a variable in C#, I can introduce additional braces - i.e.:
class Program { static void Main(string[] args)[code].....
In the ide, I can no longer reference y outside of the scope introduced by the new braces. I would have thought that this would mean that the variable y would be available for garbage collection.(it is interesting to note that when viewing the compiled code using reflector it appears that there is no difference with or without the additional braces)Is there any way similar to this to narrow scope when using VB.net? Does this have any impact on when variables defined in the inner scope may be garbage collected?
with VB.NET + MySQL i am having a connection object which is public public MYcnn as MySql.Data.MySqlClient.MySqlConnection when my main form opens MYcnn will open & will be available for all the procedures & functions. i never close this connection until the last form of the application closes (yes of course i compromise of some security + performance issues)
my problems is(1)when & how the garbage collector works to collect my connection object if my connection object remains open for > then certain time(2) how to offer or fix the time of my connection object availableness to garbage collector (3) i would like to write an event for the connection object closed event(i am explicitly declaring the connection object)
I have an Excel file that downloads automatically, but for some reason the binary XLS file contains some garbage HTML text at the end of it.
When opening the file in the Excel application, it shows a warning but proceeding will automatically remove the garbage HTML text.
However, I need to open the file programmatically. When doing so via
Dim wb As Workbook = Excel.Workbooks.Open(ExcelFileName)
It throws:
Exception from HRESULT: 0x800A03EC
a) Get Excel to perform a similar action as if I manually opened it and remove the garbage HTML automatically. NOTE: Tried setting the XlCorruptLoad.xlRepairFile parameter and it didn't work.
OR b) Remove the garbage text from the XLS binary file (FileStream?) and resave it before attempting to open the file with the code mentioned above.
The garbage html always comes at the very end of the file and starts with
I converted a project from 2008 to 2010 to be able to use the TPL.I've updated the compile target to .NET 4. Everything seems good, including the .NET 4 specific TPL stuff...except that:[code]