[英]C# Add server users to List<>
我創建了一個應用程序,用於檢查登錄到計算機的用戶數量並執行計數。 我使用Cassia來獲取用戶名,但是我想將這些用戶名放在列表中並發送到我的數據庫。
我將這些用戶名放入列表時遇到問題。 這是我的代碼:
static void Main(string[] args)
{
while (!Console.KeyAvailable)
{
List<string> list = new List<string>();
string host = Dns.GetHostName();
ITerminalServicesManager manager = new TerminalServicesManager();
using (ITerminalServer server = manager.GetRemoteServer(host))
{
server.Open();
foreach (ITerminalServicesSession session in server.GetSessions())
{
NTAccount account = session.UserAccount;
if (account != null)
{
list.Add(account.ToString());
Console.WriteLine(list);
Console.WriteLine("Count: " + list.Count);
Thread.Sleep(10000);
}
}
}
}
}
當我運行應用程序時,計數正確執行,但列表不會顯示在我的應用程序中。 顯示System.Collection.Generic.List``1[System.String]
而不是列表。 有沒有辦法將這些用戶名放在列表中? 或者陣列會更好? 有什么建議么? 謝謝。
嘗試使用以下打印列表
list.ForEach(Console.WriteLine);
這將打印所有列表元素。 每行一個。
我在這里看到幾個問題。
第一個:地方列表創建和打印超出你的循環,否則你正在為每個session
對象創建新的列表,我真的懷疑它是有意的。
第二個:您無法使用一個WirteLine
打印列表,因為在此WirteLine
中它嘗試使用從對象繼承的列表的.ToString()
方法,並為您提供類似System.Collection.Generic.List``1[System.String]
結果System.Collection.Generic.List``1[System.String]
。
相反,你必須使用另一個循環來遍歷列表並打印它:
List<string> list = new List<string>();
foreach (ITerminalServicesSession session in server.GetSessions())
{
NTAccount account = session.UserAccount;
if (account != null)
{
list.Add(account.ToString());
}
}
foreach (var item in list)
Console.WriteLine(item);
Console.WriteLine("Count: " + list.Count);
Thread.Sleep(10000);
這一行將list.ToString()的值打印到控制台:
Console.WriteLine(list);
您的帳戶在那里,但ToString的默認行為將打印有關對象類型的信息。 嘗試用以下代碼替換該行:
Console.WriteLine(account.ToString());
您可以使用此代碼塊:
foreach (var item in list)
Console.WriteLine(item);
Console.WriteLine(list)
與Console.WriteLine(list.ToString())
。 ToString()
方法返回List對象的系統名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.