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)
  ; ...
  
EndProcedureCode: 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()
EndProcedureCode: Alles auswählen
R_GetMemSizeCode: Alles auswählen
 R_GetreceivedMemSize