Hallo Leute
In meinem Programm erkenne ich mit eienr Bibliothek, ob ein USB Stick angeschlossen wurde oder abgezogen wurde und bekomme den Laufwerksbuchstaben geliefert.
Jetzt habe ich aber ein Problem.
Wenn der Stick das erste mal angesteckt wird, er also eine neue DeviceID hat.
Ich aber vorher schon einen anderen Stick angeschlossen hatte mit gleicher VendorID und ProductID, daher die Treiber für den Stick schon installiert wurden, meldet er den stick dann nach 1 sekundwe wieder ab, macht irgend was und meldet ihn dann wieder an. Ich habe damit beim ersten anschließen so ein an-ab-an-ab-an ablauf, bis er dann zum schluss angemeldet bleibt.
Das bringt meine Software durcheinander, denn beim ersten anmelden, will die vom stick etwas runterkopieren und dann ist der wieder weg.
Kann man dass irgendwie abschalten?
Oder gibts eine möglichkeit unter C# zu erkennen, dass der stick noch nicht vollständig eingerichtet ist?
Beim zweiten mal anstecken des Sticks geht dann wieder alles. es kommt dann nur ein Anmelden.
Grüße Cornflake
Hi Cornflake,
irgendwie muß deine Software sowieso damit umgehen, daß ein USB-Stick jederzeit wieder abgezogen werden kann. Auch wenn man gerade etwas davon liest. Das sollte ja mit einem einfachen ExceptionHandling schon ausgeschlossen werden können. Und dann würde der Benutzer gar nichts davon mitbekommen, daß er erst beim zweiten Versuch richtig erkannt wurde.
Warum das Verhalten allerdings so ist, kann ich dir nicht sagen.
Christian
Weeks of programming can save you hours of planning
Kann man dass irgendwie abschalten?
Davon abgesehen, dass - wie MrSparkle schon sagte - Du das ohnehin abfangen musst, kannst Du das nicht abschalten.
Es finden hier mehrere Dinge statt, zB Registry Register, Treibermapping etc. Du musst also mit einer gewissen Idletime rechnen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo
Danke für eure Antworten.
Das Problem ist, dass wenn mein Tool erkennt, dass ein USB Stick angeschlossen wurde, es ein externes Datenverarbeitungsprogramm startet. Dieses müsste ich ja dann irgendwie wieder abschießen, bzw. wenn das externe Tool versucht Daten auf dem Stick zu bearbeiten es dort dann auch zu Fehlern kommen kann. Zudem wenn ich das abschieße bleibt da noch ein Fehlerstatus zurück und das Tool lässt sich dann nicht so einfach wieder neu starten.
Daher bleibt mir wohl nichts anderes übrig als nach der Anmeldung noch ein paar Sekunden zu warten. Aber wenn dann dieses an-ab-an-ab-an kommt, darf ich nur einmal das externe Tool starten.
Hi,
interessant sind hier auch einige Randbedingungen. Z.B. Dürfen die Daten vom USB-Stick kopiert werden? Geht's um ein größeres Volumen?
Eine Mögliche Lösung wäre nämlich erst mal mit Deinem Programm die Daten in einen Temp-Ordner zu kopieren und dann das zweite Tool über diesen laufen zu lassen - allerdings nur dann, wenn auch alle passt.
Bart Simpson
Praxis ist wenn alles funktioniert und keiner weiss warum.
Theorie ist wenn man alles weiss, aber nichts funktioniert.
Bei uns wird Theorie und Praxis vereint: Nichts funktioniert und keiner weiss warum...
Wie wäre es eine Art Delay einzubauen ? Du wartest x Sekunden und prüfst ob der Stick noch da ist.
Wenn ja, starte das externe Programm.
Ne ist unterschiedlich meist so etwas im 5MB Bereich. Bisher ist alles auf dem Stick und wird dann meist dort direkt angepasst.
Aber ok werde dann zwei Wege testen.
Zum Einen warten bis sich alles beruhigt hat und dann erst mit dem externen Tool zu arbeiten anfangen.
Zum Anderen erstmal dann alles lokal kopieren, dort extern verarbeiten und erst zum Schluss zurückspielen. Das wird je nach Situation auch schon gemacht, aber eben nicht als feste Vorgabe.
Thx
Grüße Cornflake