MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Защо не мога да отстранявам грешки в кода в асинхронен метод?

Защото не сте await като използвате вашия GetDataAsync метод. Когато първият await е достигната, нишката се връща на повикващия. Тъй като не чакате завършването на задачата, вашето конзолно приложение излиза и точката на прекъсване не е достигната. Ще трябва също да актуализирате GetDataAsync метод за връщане на Task а не празни. Не можете да чакате недействителност. Трябва да избягвате използването на async void за нещо различно от манипулатора на събития.

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. render_template с множество променливи

  2. Единично тестване с MongoDB

  3. Намерете документи, чието поле на масив съдържа поне n елемента от даден масив

  4. MongoDb се изключва с код 100

  5. MongoDB:Използване на съвпадение с променливи на входния документ