|
hello all
which of the follwing is safer to use
this.Dispose()
OR
this.Close()
Wht is the fundamental difference btwn these two
Thanks
TJS
|
|
|
|
|
TJS4u wrote: this.
Well it depends what Type "this" is.
In some cases Streams/IO and such, they are fairly comparable. Dispose will normally call close. If an object is disposable you should always call dispose when you are finished with it to ensure the finaliser is suppressed. Normally it's ok to just call dispose, but there is no harm in closing explicitly first just to be safe.
For some types of objects, like Forms, close has a specific meaning. Close() will close the form. Dispose will probably also call close, but in many cases you may want to close the form, but still keep the object to do some work with before you are ready to dispose of it.
Simon
|
|
|
|
|
Close() might eventually call Dispose(), actually depends on the class implementation, whereas Dispose must be defined if IDisposable is implemented for resource cleanup
Use using clause;
using(resource) {
}
This will automatically dispose your resource (say a stream), if it implements IDisposable interface
Regards,
Lev
|
|
|
|
|
Close and Dispose for most classes seem to be very close. And in many cases Dispose will call Close. But, the fundamental difference is that Close has the class Dispose alot of its objects, while Dispose actually Disposes the object you are calling it on.
The best way to accelerate a Macintosh is at 9.8m/sec² - Marcus Dolengo
|
|
|
|
|
As it was already said it depends on actual type. For example with sqlconnection object close() and dispose() do the same thing. For other types you can use Reflector to see what dispose() and close() do and compare them.
|
|
|
|
|
To find the difference between the two in a specific instance, .NET Reflector on the type you'd like to examine. You can download it for free from redgate.com.
Scott P
"Simplicity carried to the extreme becomes elegance."
-Jon Franklin
|
|
|
|
|
while working with winfroms in c# i found no of problems
1. when i manually modify my designer.cs surface. Such as checking the attributes. i lost my designer view. And having a massege that "the code within the initilizecomponents is generated by designer and should not be manually modified. Please remove any changes and try opening designer surface again "
Any solution....
2. How can we set the FormBorderStyle in c#
|
|
|
|
|
|
you mean that there is no solution for that?
i have modified that file and when i run my application, what it shows its according to that modified code.
|
|
|
|
|
Solution to what? If you get another appearance of you controls, change it back. If you are getting an error, please post it.
Regards,
Lev
|
|
|
|
|
Christian Graus wrote: you should never modify that file. Apart from anything else, it's regenerated by the IDE, so you're wasting your time
Generaly I agree but sometimes you need to go into it to solve problems.
Also I frequantly use it to see how a control gets initialized and added.
|
|
|
|
|
Well, sometimes you're just forced to edit the _designer.cs (like making some changes without the studio ) But of course you should really know what you are doing.
Regards,
Lev
|
|
|
|
|
as Lev said above,"sometimes you're just forced to edit the _designer.cs"
it means when ever i manually change my Designer.cs
i would not able to see my form view?
|
|
|
|
|
hotthoughtguy wrote: it means when ever i manually change my Designer.cs
i would not able to see my form view?
Not exactly.
You see the designer generated code is being compiled on-the-fly when you open the design view. So, if you do some changes which won't compile (e.g. syntactic error and such), you'll end up with not working design view.
Let me say again, you should really know what you are doing, when modifying designer generated code.
Regards,
Lev
|
|
|
|
|
Christian Graus wrote: it's regenerated by the IDE, so you're wasting your time
That's true, but I go in sometimes to change a component class to a non-system class, and the designer keeps it, even after regenerating (in fact, it fully qualifies the custom class with the namespace). Granted, you should avoid manually changing the file, it is possible to do.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
ok thanks a lot
|
|
|
|
|
If you edit the xxx.Designer.cs file and the code isn't correct the designer can't display the form until the code is corrected.
Everytime you change something in the designer, this file gets rewritten so it's possible (but not certain) that your changes will get overwritten/erased. That's why it's called 'Desigener'.cs
If you need to make any changes of your own that can't be done in the designer, put them in the xxx.cs file or create a xxx.MyStuff.cs file and create another partial class (of the same name) in there, and call any methods from the xxx.cs before/after the InitializeComponent call as appropriate.
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia)
|
|
|
|
|
I am converting ArrayList to String Array in .NET 2.0 framework ...
string[] ControlButtons = (string[])controlList[i].ToArray(typeof(string));
but it through error 'object' does not contain a definition for 'ToArray' please give me solution to convert arraylist to string array
Thanks.
|
|
|
|
|
Did you try reading the error ? It doesn't know that the object is an arraylist, it only knows it's an object. So, you need to cast it.
((ArrayList)controlList[i]).ToArray
Why are you using Arraylist if you're using .NET 2.0 ? Use generic lists.
Christian Graus
Driven to the arms of OSX by Vista.
|
|
|
|
|
I'm not sure what it is you want to achieve but dropping the [i] turns that statement into something that compiles.
|
|
|
|
|
This works fine for me:
ArrayList list = new ArrayList();
list.Add("a");
list.Add("b");
string[] arr = (string[])list.ToArray(typeof(string));
I guess you should do:
string[] ControlButtons = (string[])controlList.ToArray(typeof(string));
Regards,
Lev
|
|
|
|
|
Hello to all,
Here is my code:
client.HostToClient_Bytes(new CommsInfo_Bytes(Bytes));
[Serializable()]
public class CommsInfo_Bytes
{
private byte[] _Bytes;
public CommsInfo_Bytes(byte[] Bytes)
{
_Bytes = Bytes;
}
public byte[] Bytes
{
get { return _Bytes; }
set { _Bytes = value; }
}
}
when i am calling HostToclient_Bytes i am getting error say "Object refrence cannot be set as an instance of an object"
So will anybody helps me?
Thank you in advance.
|
|
|
|
|
Hi,
I'm just guessing but don't you need to declare a constructor without params if you want to serialize the object?
<br />
public CommsInfo_Bytes() {<br />
}<br />
Regards
Sebastian
|
|
|
|
|
hello,
I have done same implementation for messsage string passing in that i have not declare any empty construstor.
Thank you.
|
|
|
|
|
Hello,
But in string class i have declare as
private string _Message = "";
so any modification is needed in byte array declaration?
|
|
|
|