Hi Leute,
ich bin grade dabei einen Screen-Recorder zu programmieren, was auch soweit recht gut funktioniert. Dazu habe ich das Konzept: Thread 1 nimmt auf Thread 2 speichert auf der Platte. Dazu verwende ich ne
Mein Code ist der hier:
Das Lustige ist, das passiert erst, sobald ich VS auf den 2. Monitor ziehe von mir
Btw An CaptureScreen.CaptureDesktopWithCursor liegts nich weil ich habe mitm VS Profiler herausgefunden das es die Queue ist.
Hoffe ihr könnt mir Helfen
EDIT: Ohne den Debugger läufts einwandfrei bei ~13MB RAM verbrauch xD
LG
Twometer
ich bin grade dabei einen Screen-Recorder zu programmieren, was auch soweit recht gut funktioniert. Dazu habe ich das Konzept: Thread 1 nimmt auf Thread 2 speichert auf der Platte. Dazu verwende ich ne
ConcurrentQueue(Of Image)
. Jetzt läuft aber trotz versuche mit Dispose
und GC.Collect()
mir nach ~20 Sekunden der RAM über ==> OutOfMemoryException.Mein Code ist der hier:
VB.NET-Quellcode
- Dim saverThread As New Thread(AddressOf DoWorkSave)
- Dim takerThread As New Thread(AddressOf DoWorkTake)
- Dim imgList As New ConcurrentQueue(Of Image)
- [...]
- Private Sub DoWorkSave()
- While True
- Dim itm As Image
- If imgList.Count <> 0 AndAlso imgList.TryDequeue(itm) Then
- itm.Save("C:\ScreenRecTemp\" + imgCounter.ToString + ".png", ImageFormat.Png)
- imgCounter += 1
- itm.Dispose()
- End If
- If imgList.Count = 0 And Not threadRunning Then
- Exit While
- End If
- End While
- saverThread.Join()
- End Sub
- Private Sub DoWorkTake()
- While threadRunning
- Dim x = CaptureScreen.CaptureDesktopWithCursor
- If x IsNot Nothing Then
- frames += 1
- allFrames += frames
- allFramesCount += 1
- imgList.Enqueue(x)
- End If
- End While
- takerThread.Join()
- End Sub
Das Lustige ist, das passiert erst, sobald ich VS auf den 2. Monitor ziehe von mir
Btw An CaptureScreen.CaptureDesktopWithCursor liegts nich weil ich habe mitm VS Profiler herausgefunden das es die Queue ist.
Hoffe ihr könnt mir Helfen
EDIT: Ohne den Debugger läufts einwandfrei bei ~13MB RAM verbrauch xD
LG
Twometer
An Error 404 occurred while loading signature...