|
Daniel Grunwald wrote: delegate.BeginInvoke (creates new thread [from thread-pool]) without delegate.EndInvoke will cause a memory leak.
I am troubled by threads invoked from ThreadPool.
Can you give me some hint about what the memory leak will bring about?
Thank you.
|
|
|
|
|
I think you will leak one WaitHandle for each delegate.BeginInvoke call, plus any objects waiting to be returned (e.g. exceptions). When you want to use the thread-pool in "fire-and-forget" mode, use hreadPool.QueueUserWorkItem or provide a callback-method to delegate.BeginInvoke that in turn calls delegate.EndInvoke.
|
|
|
|
|
Can you show the code in which you are invoking the thread which is creating the problem? Garbage collection will not be done unless the thread is finished with the execution. The only possibility that I am seeing here is that the system is not being able to provide all the requested resources by the program and hence the results are not coming out as expected. A look at the source code will give me a better idea of this.
|
|
|
|
|
Tehnoon wrote: Can you show the code in which you are invoking the thread which is creating the problem? Garbage collection will not be done unless the thread is finished with the execution. The only possibility that I am seeing here is that the system is not being able to provide all the requested resources by the program and hence the results are not coming out as expected. A look at the source code will give me a better idea of this.
Sorry for a late response.
A statemachine exists in my program, and all the events are dispatched to it by seperate threads.The code is something like the following.
public class Control
{
private StateMachine myStateMachine = new StateMachine();
public void EventProc1()
{
....
EventHandler eventHandler = new EventHandler(this.Thread1);
eventHandler.BeginInvoke(this,null,null,null);
}
public void EventProc2()
{
....
EventHandler eventHandler = new EventHandler(this.Thread2);
eventHandler.BeginInvoke(this,null,null,null);
}
protected void Thread1(object sender,EventArgs e)
{
LogMessage("Start of thread1");
this.myStateMachine.Dispatch(1);
}
protected void Thread2(object sender,EventArgs e)
{
LogMessage("Start of thread2");
this.myStateMachine.Dispatch(2);
}
}
public class StateMachine
{
public void Dispatch(event id)
{
switch(event id)
{
case 1:
....
break;
case 2:
....
break;
...
default:
break;
}
}
}
Up to now, many phenomena happened, such as although the LogMessage were logged in log file, the thread just stopped somewhere afterward. Or sometimes, one thread should be waiting for an AutoResetEvent which must be set in another thread as designed, but the previous thread moves on before the AutoResetEvent is Set()...
Another important supplement is that GC.Collect() is executed in another thread, ie. in EventProc1().
I have written many test programs so as to find the real reason, and still don know where a memory leak brought by no-EndInvoke will lead to the above phenomena.
Looking forword to your help.
Thank you!
|
|
|
|
|
can any body tell me about something about Encoding class
|
|
|
|
|
Such as? We'll need a bit more clarifcation about what you want. You've just asked a question like "Can someone tell me something about a car?"
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
|
In waht aspect do you want to know about Encoding?
Regards.
|
|
|
|
|
Is there a easy way to remove the black border around a Forms.Button when it is set to a FlatStyle of Flat? The button has a bitmap image on it and there doesn't seem to be a way to get rid of the black border around the button when it is selected or not selected.
I would think there would be a property to set it on or off but I don't see any. Does anyone know?
|
|
|
|
|
Set its FlatAppearance.BorderSize to 0.
--
I've killed again, haven't I?
|
|
|
|
|
you may change the forecolor to your interface color.
this.button3.ForeColor = System.Drawing.SystemColors.Control;
|
|
|
|
|
Hi everyone!
I have a webpage that allows a user to upload a file for storage in a database. However, I am having a problem when users try to upload a bigger file (usually 3MB+). I am assuming that this is because I am trying to send the entire file to the server at once How can I get around this?
Any help is greatly appreciated
|
|
|
|
|
could it be that since the file is so large/connection is so slow, the operation times out?
as to get around it, you could have the file rar'ed (like a zip) which will zip it up into pieces and then send the pieces bit by bit. Also, try compressing the file so that it gets smaller.
If not, use FTP connection instead of form based.
|
|
|
|
|
jeweladdict wrote: could it be that since the file is so large/connection is so slow, the operation times out?
I am assuming so.
Adding a rar or zip to the file might help but it is not something that i really want to do. Is there a way that you know of that I can send the file to the server in pieces?
Thanks
|
|
|
|
|
ftping would be the best bet.
|
|
|
|
|
Ok thanks i'll give that a try
I also have a another question... Is it better to save the file to a database on the server or right on the disk?
|
|
|
|
|
That depends on how you are going to use the file.
---
b { font-weight: normal; }
|
|
|
|
|
There's a limit on the size of a request, I believe it's 4 MiB by default. Could it be that? Then you can change the limit in web.config.
---
b { font-weight: normal; }
|
|
|
|
|
Thats news to me How would I make those changes?
Thanks
|
|
|
|
|
Look up MaxRequestLength.
---
b { font-weight: normal; }
|
|
|
|
|
|
I've got a half dozenish identical copies of an imagelist in different forms of my app. To avoid having to make changes to each of them if it was modified I want to move them into a single location and share it between all the forms. To have design time support for the data I derived the wrapper class from System.ComponentModel.Component. I then copied the ImageList from one of the existing forms. The images, and the related data in the class is all global/shared so I made the class static and made the neccesary type changes to the declaration and InitializeComponent().
Initially everything worked great, prior to checking the source in however I renamed the imagelist to something more appropriate for general use (old name was targeted at the form I copied from). At that point, VS zapped the imagelist and it's contents into oblivion. I did a bit of experimenting afterwards, and found that any component I add to the design page and then make static is removed after the next build.
Is there any way to make VS leave the static components alone? If not, I can add a static SetImageList(...) method, keep the imagelist in the class with my Main() method, and have it's constructor do the initialization, but this feels like a kluge and I'd prefer a more graceful approach if possible.
|
|
|
|
|
I have a form with 20+ text boxes and other controls that get configured by the user at startup. Is there anyway to save the state that every control is in, including the text in the text boxes so that the user can load them later? I was messing around with serialization of the form, but I can't seem to get that to work.
Thanks!
|
|
|
|
|
Why don't you save your values to a xml file or a database and then retrive them from there?
--------------------------------------------------------
My development blog
Q:What does the derived class in C# tell to it's parent?
A:All your base are belong to us!
|
|
|
|
|
wouldnt that be the same as writing it to a text file? What benefits are there to the xml file, and is there an easy way of doing it?
I know with datagrids you can do the writeXML command, is there soemthign similar?
|
|
|
|