【发布时间】:2017-09-09 09:11:48
【问题描述】:
大家好,我做了一些代码来获取 mongodb 服务器中存在的数据库列表。 列表存储在 lst 我想让函数返回一个结果,所以我用完了。 这是第一种效果很好的方法
public static async void listDatabases()
{
List<string> lst = null;
try
{
MongoClient client = new MongoClient("mongodb://127.0.0.1:27017");
//MongoServer server = client.GetServer();
// List<string> lstdatabases = server.GetDatabaseNames().ToList();
using (var cursor = client.ListDatabasesAsync())
{
await cursor.Result.ForEachAsync(d => lst.Add(d.GetElement(0).Value.ToString()));
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这是我试图使函数返回值的原因
public static async void listDatabases(out List<string> lstListDB)
{
List<string> lst = null;
try
{
MongoClient client = new MongoClient("mongodb://127.0.0.1:27017");
//MongoServer server = client.GetServer();
// List<string> lstdatabases = server.GetDatabaseNames().ToList();
using (var cursor = client.ListDatabasesAsync())
{
await cursor.Result.ForEachAsync(d => lst.Add(d.GetElement(0).Value.ToString()));
lstListDB = lst;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
lstListDB = null;
}
}
它说我不能使用异步方法任何帮助谢谢
【问题讨论】:
-
让方法返回一个
Task<List<string>>。 Why you can't useout -
你应该尽可能避免像
async void这样的回报 -
我不知道它说你可以用 asynch 方法和 Task
- > 我做不到,任何帮助请只是新的