2013-05-09 34 views
0

目前我在下面使用1代碼,它工作得很好。在郵件c#中追加輸出和字符串?

我正在提取服務器的CPU和內存使用率,並在循環中10-15秒後發送郵件。該循環運行5次,間隔爲10秒。

它發送5封郵件。

而不是發送5個不同的郵件,我只想發送1封郵件。互相之下有5條線。

for (int i = 0; i < 5; i++) 
{ 
    float cpu = getCPUCOunter(); 

    float memory = getRamCounter(); 

    ulong TotalMemory = new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory; 

    TotalMemory = TotalMemory/1024000; 

    float PhysicalMemory = (TotalMemory - memory) * 100/TotalMemory; 

    SendMail("PROD Server CPU and Physical Memory Utalization", 
      "CPU Utilization = " + Math.Round(cpu) + "%\r\n" 
      + Environment.NewLine + " \nPhysical Memory Utilization " + 
      Math.Round(PhysicalMemory) + "%" + Environment.NewLine + 
      " at " + DateTime.Now.ToString("HH:mm:ss tt")); 
    Thread.Sleep(10000); 
} 

電流輸出(樣本):

Mail 1 : CPU Utilization = 0% Physical Memory Utilization 61% at 14:06:32 PM 
Mail 2 : CPU Utilization = 0% Physical Memory Utilization 61% at 14:06:32 PM 
Mail 3 : CPU Utilization = 0% Physical Memory Utilization 61% at 14:06:32 PM 
Mail 4 : ----= ---- 
Mail 5 : --- = ----- 

(在一個郵件上述所有線路)預期輸出:

CPU Utilization = 0% Physical Memory Utilization 61% at 14:06:32 PM 
CPU Utilization = 0% Physical Memory Utilization 61% at 14:06:32 PM 
CPU Utilization = 0% Physical Memory Utilization 61% at 14:06:32 PM 
CPU Utilization = 0% Physical Memory Utilization 61% at 14:06:32 PM 
CPU Utilization = 0% Physical Memory Utilization 61% at 14:06:32 PM 
+3

你寫了所有的代碼,但不知道StringBuilder? – I4V 2013-05-09 08:45:22

+2

StringBuilder與問題無關。 – Polyfun 2013-05-09 08:53:36

+0

@ShellShock查看接受的答案,並用'StringBuilder msg'替換'string msg',這是推薦的方法。你現在可以看到*相關性*嗎? – I4V 2013-05-09 11:22:26

回答

2

消息只是追加到一個字符串,並在發送的一切end:

string msg = string.empty 
for (int i = 0; i < 5; i++) 
{ 
    float cpu = getCPUCOunter(); 

    float memory = getRamCounter(); 

    ulong TotalMemory = new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory; 
    TotalMemory = TotalMemory/1024000; 

    float PhysicalMemory = (TotalMemory - memory) * 100/TotalMemory; 

    msg += "CPU Utilization = " + Math.Round(cpu) + "%\r\n" + Environment.NewLine + " \nPhysical Memory Utilization " + Math.Round(PhysicalMemory) + "%" + Environment.NewLine + " at " + DateTime.Now.ToString("HH:mm:ss tt") + Environment.Newline; 
    Thread.Sleep(10000); 
} 

SendMail("PROD Server CPU and Physical Memory Utalization", msg) 
+0

它不採用換行符,它只是並排附加我認爲environment.newline不會在兩行之間插入一條新行。 – 2013-05-09 08:56:49

0

Capture the數組中的值,並將「SendMail」方法調用移出for循環語句。

在此for循環後爲循環創建另一個for循環,以將數組中存儲的值顯示爲行數。