ich hätte da mal eine Frage bezüglich Async und Await.
Ich selbst "lerne" erst seit 3 Wochen C# und verstehe noch nicht genau wann ich was aufrufen muss.
Folgende Aufgabenstellung hab ich:
Ich muss ein Ordner überwachen in dem wird alle 5 sec. reingeschaut ob sich dort neue Dateien befinden. (ohne events!) Sollte dies der Fall sein möchte ich mit einer Schleife die Dateien selektieren verarbeiten und wegschieben.
Dies soll nebenbei laufen.
Mein erstes Ansatz ist:
Code:
private bool runParser;
private bool lookFileSystem;
// constructor
public DirectoryDeamon2() {
RunParser = false;
lookFileSystem = true;
LookFileSystem();
}
public static bool RunParser { get; set; }
public async void LookFileSystem() {
await Task.Run(async () => {
var systemConfig = MainClass.systemConfig;
while (lookFileSystem) {
// Time to wait in ms
Thread.Sleep(5000);
// Parser is running: continue
if (RunParser)
continue;
// Search mails
var listOfMail = Directory.GetFiles($"{ systemConfig.GetConfig("incomingMailDir") }");
// Found some mails
if (listOfMail.Count() > 0) {
RunParser = true;
// Parser
await FetchMails();
}
}
});
}
public async Task FetchMails() {
Task.Run(() => {
// Datei verarbeiten
RunParser = false;
});
}
Oder hat wer eine leicht verständliche Doku zu dem Thema?
Mfg Masterkroko






. Mit anderen Worten, so nicht Thread.Sleep verwenden, wenn es nicht zeitlich "verrutschen" darf.
