*Can't use Plinq as my app targets 3.5*
我正在创建一个应用程序,用户可以在其中找到当前服务器的名称。
这基本上是通过从服务器列表中查询每个服务器的用户,然后检查输出以查看用户名是否出现。如果是,则将它们连接到有问题的服务器
查找服务器名称的代码如下所示(其中name是用户名):
public static string[] get_Session(List<string> servers, string name)
{
string[] sessionDetails = new string[3];
// Iterate through serverList to find the correct connection - then add this to the sessionDetails array
string current = "";
for (int i = 0; i < servers.Count; i++)
{
ProcessStartInfo startInfo = new ProcessStartInfo("cmd", "/c QUERY SESSION " + name + " /SERVER:" + servers[i] + ".mydomain1.co.uk ")
{
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
};
Process getsess = Process.Start(startInfo);
getsess.OutputDataReceived += (x, y) => current += y.Data;
getsess.BeginOutputReadLine();
getsess.WaitForExit();
if (current.Contains(name))
{
// Session ID
sessionDetails[0] = current.Substring(119, 4);
// Server Name
sessionDetails[1] = servers[i] + ".mydomain1.co.uk";
break;
}
}
return sessionDetails;
这很有用,似乎每次都会返回正确的会话详细信息,但它会在我的应用程序运行时间上增加大约10秒。
我已经研究过使用后台工作者类,但根据我所读到的内容,我不确定如何使用它实现这样的东西 - 有人可以告诉我这是否可能吗?
如果有人知道如何实现这一点,以便每个服务器查询与其他查询并行运行,我将非常感谢您能与我分享。
非常感谢