Announcement

Collapse
No announcement yet.

Statusrückmeldun an Form

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Statusrückmeldun an Form

    Hallo zusammen,
    ich lese Binärdaten aus einer Datenbank und schreibe diese als File auf die Festplatte.
    Ich möchte nun ein Rückgabewert an die Form weiter geben, damit der User weiss wieviel % der Daten schon geschrieben sind.
    Hat jemand eine Idee wie ich das in meinem Code machen kann...??

    [highlight=vbnet]
    Try
    conn.Open()

    cmd.Connection = conn
    cmd.CommandText = SQL
    cmd.CommandTimeout = MyTimeOut

    myData = cmd.ExecuteReader

    myData.Read()

    FileSize = myData.GetInt32(myData.GetOrdinal("FileSize"))
    RawData = New Byte(CType(FileSize, Integer)) {}

    myData.GetBytes(myData.GetOrdinal("MyFile"), 0, RawData, 0, CType(FileSize, Integer))

    OpenFileName = myData!Name.ToString
    Using Fs As New IO.FileStream("E:\Test\" & myData!Name.ToString, IO.FileMode.OpenOrCreate, IO.FileAccess.Write)
    Fs.Write(RawData, 0, CType(FileSize, Integer))
    'hier Rückgabe an die Form wieviel Bytes geschrieben...
    Fs.Close()
    End Using

    myData.Close()
    conn.Close()

    Catch ex As Exception

    End Try
    [/highlight]

    Schon mal danke für Eure mühe....

  • #2
    Hallo,

    mit NET-Bordmitteln geht das nicht, weil FileStream.Write ein Befehl ist, der "am Stück" erledigt wird. Vielleicht gibt es Win32-Mittel, um das auszulagern.

    Notfalls könntet Du das Ganze in einen BackgroundWorker einbinden und per Schleife blockweise z.B. jeweils 100.000 Bytes speichern. Mit ReportProgress gibst Du den Arbeitsfortschritt bekannt; dem ProgressChanged-Ereignis ordnest Du die Aktualisierung der Anzeige zu.

    Gruß Jürgen

    Comment


    • #3
      OK. Danke für den Hinweis...

      Comment

      Working...
      X