vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Multitasking Problem mit Array 
Autor: TBX
Datum: 05.04.11 08:03

Hallo,
da das folgende Problem Teil einer komplexen Anwendung ist, versuche ich es erstmal grob zu Erklären.
Mein Programm besteht aus zwei Komponenten. Das Hauptprogramm mit der GUI und der ActiveX-EXE, welche die Dateien verarbeitet.
Das Programm hat eine große Anzahlt an komplexen Konfigurationsdateien zu verarbeiten, welche zunächst geparst werden müssen. Um die Verarbeitungszeiten erheblich zu verkürzen, setzte ich auf Multitasking, welches durch die ActiveX-Exe realisiert wird.
Die GUI-Exe enthält einen Scheduler mit einer Warteliste für ausgelagerte Prozesse, von denen immer 10 gleichzeitig verarbeitet werden. Ein "Prozess" enthält u.a. jeweils den Dateinamen und einen Zeiger auf die Klasse in der ActiveX. Das funktioniert alles wunderbar. Aber jetzt kommt das Problem:
Die GUI hängt die erste Konfigurationsdatei an den Scheduler an, darin gibt es eine Funktion "CreateProcess", im folgenden grob dargestellt:
Public Function CreateProcess(File as String, ...)
 
(...)
Dim iId as Long
 
iId = FindFreeProcess()
 
If iId = -1 Then
 
 iId = UBound(Processes) + 1
 
 Redim Preserve Processes(iId)
 
End If
 
(...)
 
End Function
In einem eigenen Prozess wird nun die Konfigurationsdatei geparst. Enthält diese Verweise auf weitere Dateien, werden die per Event an die Gui zurückgegeben und wiederrum dem Scheduler (mit "CreateProcess") zugeführt. Das ganze ist also mehrfach verschachtelt.

Und nun kommt es: Bei Redim Preserve knallt es regelmäßig: "Array unveränderlich oder gesperrt".
Das kommt wohl daher, das mehrere Prozesse gleichzeitig auf diese Funktion zugreifen. Es passiert aber auch nur wenn größere Dateien eingelesen werden.

Ich habe schon einiges Versucht, z.B. mehrfaches wiederholen in der Hoffnung daß das Array in der Zeit wieder frei wird, oder ich habe eine Warteschleife in "CreateProcess" eingebaut. Kein Erfolg.

Hat vielleicht irgend jemand eine Idee wie ich verhindern kann, das mehrere Prozesse gleichzeitig in die Funktion einspringen können, ohne das ich Dateien fallen lassen muss? Oder wie ich die Funktion so gestalten kann das es nicht mehr knallt?

Ich kann auch wenn ich heute Abend zu hause bin, mehr Details des Quellcodes posten, habe aber hier gerade keinen Zugriff darauf.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Multitasking Problem mit Array1.582TBX05.04.11 08:03
Re: Multitasking Problem mit Array1.071Dirk05.04.11 08:30
Re: Multitasking Problem mit Array924TBX05.04.11 15:49
Re: Multitasking Problem mit Array923Dirk05.04.11 16:37
Re: Multitasking Problem mit Array955TBX05.04.11 17:21
Re: Multitasking Problem mit Array1.115Dirk06.04.11 09:49
Re: Multitasking Problem mit Array1.011TBX07.04.11 20:50
Re: Multitasking Problem mit Array1.067Blackbox07.04.11 21:45
Re: Multitasking Problem mit Array894TBX08.04.11 10:05
Re: Multitasking Problem mit Array1.111Blackbox21.04.11 19:26
Re: Multitasking Problem mit Array849TBX22.04.11 23:40
Re: Multitasking Problem mit Array803Blackbox23.04.11 20:20
Re: Multitasking Problem mit Array907TBX24.04.11 10:22

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel