C#+ MongoDB:程序终止并抛出无异常

时间:2015-10-04 16:16:22

标签: c# mongodb mongodb-.net-driver

我在C#上使用MongoDB并尝试进行简单查询。 程序执行终止于以下行:

var people = await collection.Find(filter).ToListAsync();

或在线

using (var cursor = await collection.FindAsync(filter))

它没有例外,它有Console.WriteLine(" test")和Console.ReadLine() 在程序结束时未执行。在cmd中,我看到与DB的连接已建立。

有什么想法吗?

P.S。

 var filter = Builders<Follower>.Filter.Eq("id", f.id);
        List<Follower> fetchedFollowers = new List<Follower>();
        Console.WriteLine("0");
        try
        {
            using (var cursor = await collection.FindAsync(filter))
            {
                Console.WriteLine("1");
                while (await cursor.MoveNextAsync())
                {
                    var batch = cursor.Current;
                    foreach (Follower foll in batch)
                        fetchedFollowers.Add(foll);
                }
            }

        }
        catch (Exception e)
        {

            Console.WriteLine("Exception block");
            Console.WriteLine("2");
        }

        Console.WriteLine("3");
        Console.ReadLine();

更新。这一行:

 var count = await collection.Find(filter).CountAsync();

给出相同的结果 - 程序终止

2 个答案:

答案 0 :(得分:0)

我有类似的问题。这对我有用:

        using (var cursor = collection.FindAsync(filter))
        {
            Console.WriteLine("1");
            while (cursor.Result.MoveNext())
            {
                var batch = cursor.Result.Current;
                foreach (Follower foll in batch)
                    fetchedFollowers.Add(foll);
            }
        }

答案 1 :(得分:0)

听起来好像是sometext.blade.phpasync的使用不当。请注意,await实际上并不强制程序等待结果(使用await完成)。 Task.Wait()仅指定异步任务完成时应执行的操作。如果你的程序包含对异步方法的调用而你永远不会等待结果,它将在异步任务完成之前终止。