Smagjus
Rear Admiral
- Registriert
- Feb. 2011
- Beiträge
- 6.134
Guten Abend Programmierer
Ich habe ein Problem, bei dem ich eigentlich sagen würde man kann es leicht mit Google lösen. Naja, es geht auch, aber ich würde gerne wissen, ob es eine saubere Lösung dafür gibt.
Der Ablauf ist folgender: Ein fremdes Programm schreibt eine Bilddatei in einen vorgesehenen Ordner. Der Ordner wird von meinem Programm überwacht. Sobald das Bild fertig geschrieben ist, soll der Upload beginnen.
Der oben gezeigte Code lastet aufgrund der while-Schleife einen Kern komplett aus, was schonmal weniger schön. Thread.sleep würde ich gerne nur als Notlösung verwenden. Gibt es einen weg, das ganze so realisieren, dass ich ohne das Werfen einer Exception auskomme? Ich bin da etwas eigen und finde den Stil nicht sonderlich ansprechend.
Ich habe ein Problem, bei dem ich eigentlich sagen würde man kann es leicht mit Google lösen. Naja, es geht auch, aber ich würde gerne wissen, ob es eine saubere Lösung dafür gibt.
Code:
public static void main(string[] args)
{
while (!IsFileReady(path)) ;
//File verarbeiten
}
private static bool IsFileReady(String sFilename)
{
// If the file can be opened for exclusive access it means that the file
// is no longer locked by another process.
try
{
using (FileStream inputStream = File.Open(sFilename, FileMode.Open, FileAccess.Read, FileShare.None))
{
if (inputStream.Length > 0)
{
return true;
}
else
{
return false;
}
}
}
catch (Exception)
{
return false;
}
}
Der oben gezeigte Code lastet aufgrund der while-Schleife einen Kern komplett aus, was schonmal weniger schön. Thread.sleep würde ich gerne nur als Notlösung verwenden. Gibt es einen weg, das ganze so realisieren, dass ich ohne das Werfen einer Exception auskomme? Ich bin da etwas eigen und finde den Stil nicht sonderlich ansprechend.