Warum kann ich in einer asynchronen Methode keinen Code debuggen?
Ich habe die Nacht tatsächlich damit begonnen, mehr über MongoDB zu erfahren, aber ich habe aufgehängt und das .NET wartet / async-Zeug. Ich versuche, den Code zu implementieren, der auf MongoDBs @ angezeigt wirSeite? ˅. Ich musste es ein bisschen modifizieren, damit ich mein Programm kompilieren konnte. Ich kenne folgende meine Konsolenanwendung.
protected static IMongoClient _client;
protected static IMongoDatabase _database;
static void Main(string[] args)
{
_client = new MongoClient();
_database = _client.GetDatabase("test");
GetDataAsync();
}
private static async void GetDataAsync() //method added by me.
{
int x = await GetData();
}
private static async Task<int> GetData()
{
var collection = _database.GetCollection<BsonDocument>("restaurants");
var filter = new BsonDocument();
var count = 0;
Func<int> task = () => count; //added by me.
var result = new Task<int>(task); //added by me.
using (var cursor = await collection.FindAsync(filter)) //Debugger immediately exits here, goes back to main() and then terminates.
{
while (await cursor.MoveNextAsync())
{
var batch = cursor.Current;
foreach (var document in batch)
{
// process document
count++;
}
}
}
return count; //added by me
}
Wenn ich die Anwendung starte, ruft der Debugger meine GetDataAsync () -Methode auf, die wiederum die GetData () -Methode aufruft. Es gelangt zu der Zeile "using (var cursor = await collection.FindAsync (filter))" und kehrt sofort zurück, um die main () - Methode zu beenden.
Alle Haltepunkte, die ich unterhalb dieser Linie einfüge, werden ignoriert, ebenso wie alle Haltepunkte, die ich in die GetDataAsync () - Methode einfüge. Wird dieser Code nicht ausgeführt, weil das Programm beendet wird? Kann mir jemand erklären, was los ist?