Index: trunk/Include/Classes/System/IO/FileStream.ab
===================================================================
--- trunk/Include/Classes/System/IO/FileStream.ab	(revision 347)
+++ trunk/Include/Classes/System/IO/FileStream.ab	(revision 348)
@@ -243,5 +243,5 @@
 
 Public
-	Override Function BeginRead(ByRef buffer[] As Byte, offset As Long, count As Long, callback As AsyncCallback, state As Object) As System.IAsyncResult
+	Override Function BeginRead(buffer As *Byte, offset As Long, count As Long, callback As AsyncCallback, state As Object) As System.IAsyncResult
 		If This.IsAsync() Then
 		Else
@@ -250,5 +250,5 @@
 	End Function
 
-	Override Function BeginWrite(ByRef buffer[] As Byte, offset As Long, count As Long, callback As AsyncCallback, state As Object) As System.IAsyncResult
+	Override Function BeginWrite(buffer As *Byte, offset As Long, count As Long, callback As AsyncCallback, state As Object) As System.IAsyncResult
 		If This.IsAsync() Then
 		Else
@@ -258,9 +258,12 @@
 
 	Override Sub Close()
-		CloseHandle(This.handle)
+		This.Dispose()
 	End Sub
 
 /*	CreateObjRef*/
-/*	Dispose*/
+	
+	Override Sub Dispose()
+		CloseHandle(InterlockedExchangePointer(VarPtr(This.handle),NULL))
+	End Sub
 
 	Override Function EndRead(ByRef asyncResult As System.IAsyncResult) As Long
@@ -270,5 +273,5 @@
 	Override Sub EndWrite(ByRef asyncResult As System.IAsyncResult)
 		'TODO
-	End Sub
+	End Function
 
 /*	Equals*/
@@ -342,5 +345,4 @@
 				seek.LowPart=LODWORD(offset)
 				seek.HighPart=HIDWORD(offset)
-				If seek.HighPart=0 And offset<0 Then seek.LowPart=-seek.LowPart
 				Select Case origin
 					Case SeekOrigin.Begin
@@ -396,4 +398,5 @@
 	End Sub
 
+
 Protected
 	Override Function CreateWaitHandle() As System.Threading.WaitHandle
