Jup, um das Arbeiten mit Mutexen kommt man bei Threads eigentlich nicht rum, besonders im Zusammenhang mit den PB-Bibliotheken. Das setzen der Thread-Safe Option in den Compiler Optionen ist leider nicht alles

Gruß, Alex
Code: Alles auswählen
C: 37603608
Client_Rec : 37603608 Danke für die Antwort :)
C: 37603752
Client_Rec : 37603752 Danke für die Antwort :)
C: 37603896
Client_Rec : 37603896 Danke für die Antwort :)
Code: Alles auswählen
Client_Rec : 275367944 Danke für die Antwort :)
Client_Rec : 380567936 Danke für die Antwort :)
C: 839734040
C: 380568512
Client_Rec : 380568032 Danke für die Antwort :)
Client_Rec : 380568128 Danke für die Antwort :)
Client_Rec : 380568416 Danke für die Antwort :)
C: 836400424
Code: Alles auswählen
Server_ClientConnect 66514336 1
Server_ClientConnect 66516024 1
Server_ClientConnect 35767952 1
Server_ClientConnect 35767920 1
Server_ClientConnect 36030776 1
Server_ClientConnect 36032408 1
Server_ClientConnect 67547528 1
Server_ClientDisconnect 35767920 1
Server_ClientConnect 67547592 1
Server_ClientDisconnect 36032408 1
Server_ClientDisconnect 36030776 1
Server_ClientDisconnect 35767952 1
Code: Alles auswählen
NetEvent_RecData: Client Send Data: 67300480
Code: Alles auswählen
Procedure NetEvent_RecFile(Server, Client)
; ...
EndProcedure
Code: Alles auswählen
Procedure NetEvent_Connect(Server, Client)
myLogger\Log(#PB_Compiler_Procedure, #Logger_Info, "Client Connect: " + Str(Client))
ENM\SetConnectionData(Client, 1)
PrintN("ClientConnected " + Str(Client) + " " + Str(ENM\GetConnectionData(Client)))
PrintN("TempUser: " + Str(Client) + " NonMaster")
; Stream öffnen
Define Stream.ENM_Stream = ENM\OpenStream(myConnection)
Define *Mem, MemSize, hFile, File$
; Datei in speicher
File$ = OpenFileRequester("Datei Streamen", "", "*.*", 0)
If File$
hFile = ReadFile(#PB_Any, File$)
If hFile
MemSize = Lof(hFile)
*Mem = AllocateMemory(MemSize)
If *Mem
ReadData(hFile, *Mem, MemSize)
EndIf
CloseFile(hFile)
EndIf
EndIf
If *Mem
; Stream senden
If Stream\SendMem(*Mem, MemSize) ; ############### IMA ReadError @0
; wartem bis der Stream gesendet wurde
Repeat
Select Stream\WaitForEvent()
Case #ENM_Stream_Send_Part
Debug "Send "+StrD(Stream\S_GetSentMemSize()/Stream\S_GetTotalMemSize()*100,2)+ " %"
Case #ENM_Stream_Closed, #ENM_Stream_ConnectionClosed, #ENM_Stream_Send_LastPart
Debug "Send "+StrD(Stream\S_GetSentMemSize()/Stream\S_GetTotalMemSize()*100,2)+ " %"
Break
EndSelect
ForEver
EndIf
; Speicher freigeben
FreeMemory(*Mem)
EndIf
; Stream freigebn
Stream\Free()
EndProcedure
Code: Alles auswählen
R_GetMemSize
Code: Alles auswählen
R_GetreceivedMemSize