Ich lade eine Datei herunter und möchte die Installation erst ausführen, nachdem der Download abgeschlossen ist. Wie erreiche ich das? Scheint wie FileSystemWatcher onCreate -Ereignis würde dies tun, aber dies geschieht in einem anderen Thread, gibt es eine einfache Möglichkeit, den wartenden Teil im selben Thread zu erzwingen.
Code habe ich bisher
%Vor%Ich habe SynchronizingObject und WaitForChangedResult angeschaut, aber kein funktionierendes Beispiel erhalten.
Wenn Sie darauf bestehen, FileSystemWatcher
zu verwenden, müssten Sie wahrscheinlich die Tatsache berücksichtigen, dass eine Datei einer bestimmten Größe nicht in einem einzigen Vorgang erstellt (hochgeladen) wird. Das Dateisystem erzeugt wahrscheinlich 1 created
und x changed
Ereignisse, bevor die Datei verwendet werden kann.
Sie können die Ereignisse created
abfangen und neue (dedizierte) Threads erstellen (es sei denn, Sie haben bereits einen laufenden Thread für diese Datei), in denen Sie eine Schleife erstellen und in regelmäßigen Abständen versuchen, die Datei exklusiv zu öffnen. Wenn Sie erfolgreich sind, ist die Datei bereit.
Eine Technik wäre das Herunterladen in das temporäre Verzeichnis und dann verschieben es in C: / Downloads, sobald es abgeschlossen ist.
Tags und Links c# multithreading filesystemwatcher