MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tại sao tôi không thể gỡ lỗi mã trong một phương thức không đồng bộ?

Bởi vì bạn không await nhập GetDataAsync của bạn phương pháp. Khi await đạt được luồng được trả lại cho người gọi. Vì bạn không đợi hoàn thành tác vụ, ứng dụng bảng điều khiển của bạn sẽ thoát và điểm ngắt của bạn không đạt được. Bạn cũng sẽ cần cập nhật GetDataAsync phương thức để trả về một Task chứ không phải là vô hiệu. Bạn không thể chờ đợi vô hiệu. Bạn nên tránh sử dụng async void cho bất kỳ thứ gì khác ngoài trình xử lý sự kiện.

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. MongoDB:Làm thế nào để phân tích cú pháp ngày trong phiên bản 3.6 mongoDb?

  2. Lỗi Mongo khi tôi kiểm soát hotfix

  3. tìm kiếm và sắp xếp toàn văn php mongodb

  4. Bắt MongoDB trên Linux để nghe các kết nối từ xa

  5. CouchDB và MongoDB:10 điều bạn nên biết