簡體   English   中英

C#將服務器用戶添加到List <>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM