# Thursday, August 06, 2009

WaitOne(Int32) erzeugt MissingMethodException

Heute bin ich über ein Problem gestolpert, das mich etwas schockiert hat. Wir setzen NUnit in Verbindung mit CruiseControl für den Test eines Embedded Systems ein. Die NUnit-Test werden mit .NET 3.5 entwickelt. Um mit dem Device kommunizieren zu können, gibt es ein proprietäres Netzwerkprotokoll, für das wir eine .NET-API entwickelt haben. Diese API wird gegen .NET 2.0 und .NET CF 2.0 kompiliert.

In meiner letzten Erweiterung der API habe ich unter anderem eine Ressource mit einem Mutex verriegelt. Der anschließende Entwicklertest verlief unauffällig, sodass die neue API sozusagen “RTM” wurde und an den Testentwickler ging, der die neuen Tests gegen die API programmieren sollte. Dabei stolperte er relativ schnell über eine MissingMethodException. Interessant war, dass dies durch den Aufruf von Mutex.WaitOne(Int32) hervorgerufen wurde. Darauf konnte ich mir nun gar keine Reim machen, da diese Funktion so vertraut schien. Ist sie aber nicht.

Mutex.WaitOne(Int32) ist eine neue Überladung der Funktion WaitOne(). Bisher gab es diese ohne Parameter, WaitOne(), oder mit zweien, WaitOne(Int32, Boolean) und WaitOne(TimeSpan, Boolean). Die Überladungen WaitOne(Int32) und WaitOne(TimeSpan) sind erst mit dem Service Pack 1 für .NET 3.5 hinzugekommen. Prinzipiell sollten sie damit auch nur in.NET 3.5 verfügbar sein. In .NET 2.0 sind sie nun deshalb enthalten, weil die WaitHandle-Klasse im Namensraum System.Threading untergebracht ist, der in mscorlib enthalten ist. Diese Assembly liegt nur in der Version 2.0 vor. So lange also .NET 3.5 SP1 installiert ist, ist alles ok. Wenn nicht, ist das jedoch nicht so schön, da man während der Entwicklung den Fehler nicht bemerkt.

Hoffentlich ist das der einzige Fallstrick, der durch .NET 3.5 SP1 für .NET 2.0-Entwicklungen gelegt wurde. Oder kennt jemand andere?

Thursday, August 06, 2009 7:47:00 PM (W. Europe Daylight Time, UTC+02:00) #    Comments [0] | Trackback
# Thursday, May 08, 2008

Neues Spielzeug gefällig?

Ich hoffe, dass mein Handyvertrag jetzt schneller ausläuft und mein Provider des Vertrauens das kleine Juwel in sein Portfolio übernimmt. Man sehe uns staune... das iPhone ist ja wohl ein Witz dagegen. Darauf läuft ja noch nicht einmal ein .NET Framework ;)

Thursday, May 08, 2008 11:35:36 PM (W. Europe Daylight Time, UTC+02:00) #    Comments [2] | Trackback
# Tuesday, January 22, 2008

Blog about .NET Compact Framework

Today my attention was invited by Robert to Christan Helle's blog. He is deep into the .NET Compact framework and seems to have some very interesting blog posts over there I hope to get through this weekend. I immediately added his blog to my favourite newsreader and also to the blogroll. So, if you are interested in mobile or embedded development, have a look at his site.

Tuesday, January 22, 2008 10:47:22 PM (W. Europe Standard Time, UTC+01:00) #    Comments [0] | Trackback