【发布时间】:2011-12-21 21:52:21
【问题描述】:
我有一个方法可以检查 SQL Server 是否可用
public static bool IsServerAvailable(string connection)
{
bool isAvailable = false;
try
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
isAvailable = true;
}
}
catch
{
isAvailable = false;
}
return isAvailable;
}
现在我必须编写一个方法,该方法接受具有键作为连接字符串的字典,并根据上述方法返回的结果更新值
但问题是我需要进行异步调用并且能够做到,但面临更新字典中相应 conn(键)的值的问题
public delegate bool CheckConnectionDelegate(string conn);
public static void CheckCubeAccessibility(Dictionary<ServerName, bool> serverDict)
{
string conn;
//Create the delegate
CheckConnectionDelegate serverConn = new CheckConnectionDelegate(IsServerAvailable);
foreach (var server in serverDict)
{
switch (server.Key)
{
case ServerName.A:
conn = "A";
break;
case ServerName.B:
conn = "B";
break;
case ServerName.C:
conn = "C";
break;
}
//Call the begin invoke method
IAsyncResult res = serverConn.BeginInvoke(conn, null, null);
}
}
谁能帮帮我?
上述问题的解决方案是 编写How to get the parameters passed to the asynchronous method in the callback中提到的lambda表达式
但我需要一个解决方案来延迟函数 CheckCubeAccessibility 返回,直到所有异步调用都返回
如何做到这一点?
【问题讨论】:
标签: c# asynchronous