IIRC, The using keyword isn't available until CF 2.0 (Studio '05).

Signature
Chris Tacke, eMVP
Join the Embedded Developer Community
http://community.opennetcf.com
Chris,
"using" is definitely a 1.0 keyword. I use it all the time; e.g. "using
(StreamReader sr = new StreamReader (...))". The problem is that Form does
not implement IDisposable on CF 1. Now if Form all of a sudden does
implement IDisposable, then that is, by Microsoft's definition, "a breaking
change" and should not be done.
"(new Form () is IDisposable) return false on CF 1.0, but true on .NET
(desktop).
Interesting... Seems like a major screwup/oversight by Microsoft. Yes?
That's why I still think that the GC should have: "if o implements
IDisposable && (!o.Disposed) then o.Dispose" (pseudo code). But I was shot
down last time and I guess I will be again. So, Form does not implement
IDisposable on the Compact Framework - solve that. If it is in CF 2.0, that
is a breaking change and should not be done (according to Microsoft).
Comments?
Hilton
> IIRC, The using keyword isn't available until CF 2.0 (Studio '05).
>
[quoted text clipped - 18 lines]
>>
>> Hilton
<ctacke/> - 22 Dec 2007 23:38 GMT
I just checked CF 1.0, 2.0 and 3.5 with Reflector and a Form is definitely
derived from IDisposable in all three.
Form->ContainerControl->ScrollableControl->Control->Component->IComponent->IDisposable

Signature
Chris Tacke, eMVP
Join the Embedded Developer Community
http://community.opennetcf.com
> Chris,
>
[quoted text clipped - 42 lines]
>>>
>>> Hilton
Hilton - 23 Dec 2007 06:02 GMT
Chris,
>I just checked CF 1.0, 2.0 and 3.5 with Reflector and a Form is definitely
>derived from IDisposable in all three.
>
> Form->ContainerControl->ScrollableControl->Control->Component->IComponent->IDisposable
OK, so:
Q1: Why does:
using (Form form = new Form()) {}
give the following compiler error:
c:\test\FormDispose\Form1.cs(32): Cannot implicitly convert type
'System.Windows.Forms.Form' to 'System.IDisposable'
...and..
Q2: Why does: "(new Form () is IDisposable)" return false?
Q1 is a compile time check, Q2 is a run-time and they're consistent.
Hilton
Hilton - 23 Dec 2007 06:45 GMT
To follow-up my own post:
When I run (FormDispose.exe) with the line:
"MessageBox.Show (((new Form () is IDisposable).ToString()));"
it returns *false*. This is using CF 1.
Then I add the file FormDispose.exe.config so that FormDispose uses CF 2 and
guess what? Yip, it returns *true*.
Believe it, or not...
Hilton
> Chris,
>
[quoted text clipped - 21 lines]
>
> Hilton
<ctacke/> - 24 Dec 2007 17:04 GMT
Well you have to believe the runtime. I can only conclude that I'm looking
at the wrong 1.0 binary (or at least not the one your system is using).
What version of 1.0 are you running?

Signature
Chris Tacke, eMVP
Join the Embedded Developer Community
http://community.opennetcf.com
> To follow-up my own post:
>
[quoted text clipped - 36 lines]
>>
>> Hilton
Hilton - 25 Dec 2007 05:23 GMT
CF 1.0.4292.0 which is CF1 SP3
Try it, create a Pocket PC, add the line below and on CF 1, it shows false
(and using doesn't compile either).
Hilton
> Well you have to believe the runtime. I can only conclude that I'm
> looking at the wrong 1.0 binary (or at least not the one your system is
[quoted text clipped - 40 lines]
>>>
>>> Hilton