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-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
StreamReader blockiert Datei?! 
Autor: meeresmoewe
Datum: 16.12.13 17:36

Hallo,
folgendes Problem: Ich habe ein Projekt mit VB2013, was zwei Forms beinhaltet. Das eine liest eine Datei in ein Datagridview (viewer.vb) und das andere bearbeitet die Datei (Form1.vb). Wenn ich nun viewer.vb öffne (Timer-Intervall ist auf 5000 ms) und und danach versuche über die andere Form die Datei neu zu schreiben (löschen und dann schreiben), dann kommt folgende Fehlermeldung:
Ein Ausnahmefehler des Typs "System.IO.IOException" ist in mscorlib.dll _
  aufgetreten.
 
Zusätzliche Informationen: Der Prozess kann nicht auf die Datei _
  "C:\[...]\data00.csv" zugreifen, da sie von einem anderen Prozess verwendet _
  wird.
viewer.vb:
Option Explicit On
Imports System.IO
Public Class viewer
    Private FileName As String = "data00.csv"
    Private DirectoryName As String = Environ$("appdata") + "\[...]\"
 
    Private Sub viewer_Load(sender As Object, e As EventArgs) Handles _
      MyBase.Load
        readList()
        Timer1.Start()
    End Sub
    Sub readList()
        If File.Exists(DirectoryName + FileName) Then
            dgvScores.Rows.Clear()
            Dim sr As New StreamReader(DirectoryName + FileName)
            Dim line As String()
            While sr.Peek() <> -1
                line = sr.ReadLine.Split(";")
                dgvScores.Rows.Add(line(0) + " ms", line(1), line(2))
            End While
        End If
    End Sub
 
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles _
      Timer1.Tick
        readList()
    End Sub
End Class
Ausschnitt aus Form1.vb:
Option Explicit On
Imports System.IO
    Private FileName As String = "data00.csv"
    Private DirectoryName As String = Environ$("appdata") + "\[...]\"
 
    Private Function writeList()
        Dim fileline As String = "bla" + ";" + Str(Now.Year) + "-" + Str( _
          Now.Month) + "-" + Str(Now.Day) + " " + Str(Now.Hour) + ":" + Str( _
          Now.Minute) + ";" + Name + ";" + vbCrLf
 
        If Not Directory.Exists(DirectoryName) Then
            ' Nein! Jetzt erstellen...
            Directory.CreateDirectory(DirectoryName)
        End If
        Dim Old As String = ""
        If File.Exists(DirectoryName + FileName) Then
            Old = File.ReadAllText(DirectoryName + FileName)
            File.Delete(DirectoryName + FileName)
        End If
 
        File.WriteAllText(DirectoryName + FileName, Old & fileline, _
          System.Text.Encoding.UTF8)
 
        Return True
    End Function
Warum blockiert also viewer.vb "data00.csv", obwohl die Datei nur alle 5 Sekunden abgerufen wird?
Danke im Vorraus

Visual Basic FTW!!

Beitrag wurde zuletzt am 16.12.13 um 17:37:40 editiert.

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
StreamReader blockiert Datei?!2.680meeresmoewe16.12.13 17:36
Re: StreamReader blockiert Datei?!1.949effeff16.12.13 17:57
Re: StreamReader blockiert Datei?!1.867meeresmoewe16.12.13 22:51
Ergänzende Hinweise1.826Manfred X16.12.13 19:14

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