vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Fortgeschrittene
Multithreading - Dateizugriff 
Autor: Easyrider
Datum: 11.10.05 13:40

Hi,

hab da mal wieder n kleines Problem. Zuerst mal folgende Angaben:

Meine Software ist Event-Basiert, bzw. genauer auf Dateievents:


Load-Prozedur des Programms:
 
Dim FileWatcher As FileSystemWatcher
 
'FileEventHandler starten
        FileWatcher = New FileSystemWatcher
        If ReadValue(sKey, "Eingangsordner") <> "" Then
            FileWatcher.Path = ReadValue(sKey, "Eingangsordner")
        Else
            FileWatcher.Path = Application.StartupPath
        End If
        FileWatcher.NotifyFilter = NotifyFilters.FileName Or _
          NotifyFilters.Attributes Or NotifyFilters.LastAccess Or _
          NotifyFilters.LastWrite Or NotifyFilters.Security Or _
          NotifyFilters.Size
        AddHandler FileWatcher.Created, AddressOf OnFileReceive
        FileWatcher.EnableRaisingEvents = True
Wird in dem Verzeichnis jetzt eine Datei erstellt wird das Event ausgelöst. Die Funktion des Events sieht wie folgt aus:

 Private Sub OnFileReceive(ByVal sender As Object, ByVal e As _
   System.IO.FileSystemEventArgs)
 
        Dim strExterneBezeichnung As String
        Dim Reader As StreamReader
        Dim boolBauteilGefunden As Boolean
        Dim boolResult As Object
        Dim Rechner As New clsCompiler
 
        If Not e.Name.ToLower = "matrix.txt" Then
            Exit Sub
        End If
 
        Try
            'Daten einlesen
            Reader = New StreamReader(e.FullPath)
            strExterneBezeichnung = Reader.ReadToEnd()
            strExterneBezeichnung.Trim(Chr(13))
            'Datei muss sofort wieder gelöscht werden
            Try
                Reader.Close()
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical, "1")
            End Try
            System.Threading.Thread.CurrentThread.Sleep(50)
            File.Delete(e.FullPath)
 
            'Daten aus Datenbank holen
            .....
 
 
            If boolBauteilGefunden Then
 
                'preCompiler vorbereiten
                ......
 
                'Kameras mit dem richtigen Programm initialisieren
                 ......
 
                WriteResult(boolResult)
            End If
 
        Catch ex As Exception
                MsgBox(ex.Message)
            End Try
 
    End Sub
Was ich hier mache: Ich lese die Datei "Matrix.txt" aus dem angegebenen Ordner aus. Darin steht ein Wert mit dem ich aus einer Datenbank Daten holen kann. Wurde ein Bauteil gefunden kommt erst mal ne Weile Vorbereitung. Wurden alle Vorbereitungen und Berechnungen erledigt komme ich in die Funktion WriteResult().

Die Funktion selbst sieht so aus:

    Public Sub WriteResult(ByVal ErrorOccured As Boolean)
 
        Dim strResult As String
        Dim Writer As StreamWriter
 
        If ErrorOccured Then
            strResult = "NIO;"
            'Noch alle Fehler anhängen
             ....
        Else
            strResult = "IO"
        End If
 
        Try
            If ReadValue(sKey, "Ausgangsordner") <> "" Then
                Writer = New StreamWriter(ReadValue(sKey, "Ausgangsordner"))
            Else
                Writer = New StreamWriter(Application.StartupPath)
            End If
 
            'String in die Datei schreiben
            Writer.Write(strResult)
            Writer.Close()
 
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical)
        End Try
 
    End Sub
Der Fehler tritt beim Aufruf von "Writer = New StreamWriter(ReadValue(sKey, "Ausgangsordner"))" bzw. im Else-Zweig auf falls ich den Eintrag in der Registry leer lasse.

Die genaue Fehlermeldung lautet:

Der Zugriff auf den Pfad <MeinPfad> wurde verweigert.
Kann es daran liegen das ich von einem Thread aus auf Dateien zugreifen will und sperrt mich deswegen?
Oder mache ich hier irgendwas falsch? Was muss ich verändern damit dieser Fehler nicht mehr auftritt?
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Multithreading - Dateizugriff2.082Easyrider11.10.05 13:40
Re: Multithreading - Dateizugriff863Silver11.10.05 18:08
Re: Multithreading - Dateizugriff874Easyrider12.10.05 08:53

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-2024 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