sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvorfor kan jeg ikke fejlsøge kode i en async-metode?

Fordi du ikke await ved at bruge din GetDataAsync metode. Når den første await er nået, returneres tråden til den, der ringer. Da du ikke venter på færdiggørelsen af ​​opgaven, afsluttes din konsolapplikation, og dit brudpunkt nås ikke. Du skal også opdatere GetDataAsync metode til at returnere en Task snarere end ugyldig. Du kan ikke vente tom. Du bør undgå at bruge async void til andet end hændelseshandleren.

protected static IMongoClient _client;
protected static IMongoDatabase _database;

static void Main(string[] args)
{
    _client = new MongoClient();
    _database = _client.GetDatabase("test");

    GetDataAsync().Wait(); 
    // Will block the calling thread but you don't have any other solution in a console application
}

private static async Task 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
}


  1. Tjek om redis kører -> node js

  2. MongoDB $or Aggregation Pipeline Operator

  3. Laravel:Hvordan tjekker man Redis tilgængelighed?

  4. redis Det ser ud til, at serveren har lukket forbindelsen