請問如何讓程式在背景執行?

Robert
我寫了一個蒐集每一台PC執行狀態的程式,請問如何讓程式在背景執行?


P陳
這樣可以嗎?
Me.WindowState = FormWindowState.Minimized
Me.Hide()
Robert
private void Form1_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
//Me.Hide();

}
private void Form1_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.notifyIcon1.Visible = true;
this.Hide();
}
else
{
this.notifyIcon1.Visible = false;
}
}
請問這樣為何程式不會在執行時自動縮到右下角?
P陳
這個簵例說的很清楚
請參考 是否顯示圖示


誰是誰
建議你做成 Windows Service (Windows 服務) 形式的應用程式
參考教學課程:建立 Windows 服務應用程式
Robert
為何要做成Windows Service的形式呢? 我現在碰到一個問題,我將這個程式以一個Icon放在右下角,希望使用者Double Click後,就會跳出一個視窗,讓他可以關掉該程式。但我發現因為計時是用while loop重複執行,所以Double Click變成無效,要怎樣處裡?
P陳
double Click 後 將計時器關掉即可

Timer1.Enabled=false

另:計時器儘量不要用 在 While 中啟動,很難控制
Robert
我是用sleep的方式在while loop 中,我試過只要有這個 while loop ,即使什麼都不做,double click也不會有作用。
P陳
那請將最後的程式PO上來吧
Robert
while (true)
{
try
{
SqlCommand cmd = new SqlCommand("INSERT INTO Data VALUES(@PCName,@Date,@Time,@IdleTime,@ProcessorTime,@UserTime,@AvailableBytes,@InUse,@PageFaults,@DiskTime,@DiskReads,@DiskWrites,@DiskTransfers,@PacketsReceived,@PacketsForwarded,@PacketsDelivered,@PaccketsDiscarded)", conn);

cmd.Parameters.AddWithValue("@PCName", strPCName);
cmd.Parameters.AddWithValue("@Date", DateTime.Now.ToShortDateString());
cmd.Parameters.AddWithValue("@Time", DateTime.Now.ToString("HH:mm:ss"));
cmd.Parameters.AddWithValue("@IdleTime", Math.Round(cpu1.NextValue(), 2, MidpointRounding.AwayFromZero));
cmd.Parameters.AddWithValue("@ProcessorTime", Math.Round(cpu2.NextValue(), 2, MidpointRounding.AwayFromZero));
cmd.Parameters.AddWithValue("@UserTime", Math.Round(cpu3.NextValue(), 2, MidpointRounding.AwayFromZero));
cmd.Parameters.AddWithValue("@AvailableBytes", memory1.NextValue());
cmd.Parameters.AddWithValue("@InUse", memory2.NextValue());
cmd.Parameters.AddWithValue("@PageFaults", memory3.NextValue());
cmd.Parameters.AddWithValue("@DiskTime", Math.Round(PhysicalDisk1.NextValue(), 2, MidpointRounding.AwayFromZero));
cmd.Parameters.AddWithValue("@DiskReads", PhysicalDisk2.NextValue());
cmd.Parameters.AddWithValue("@DiskWrites", PhysicalDisk3.NextValue());
cmd.Parameters.AddWithValue("@DiskTransfers", PhysicalDisk4.NextValue());

//Network

cmd.Parameters.AddWithValue("@PacketsReceived", ipstat.ReceivedPackets);
cmd.Parameters.AddWithValue("@PacketsForwarded", ipstat.ReceivedPacketsForwarded);
cmd.Parameters.AddWithValue("@PacketsDelivered", ipstat.ReceivedPacketsDelivered);
cmd.Parameters.AddWithValue("@PaccketsDiscarded", ipstat.ReceivedPacketsDiscarded);
cmd.ExecuteNonQuery();

}
catch (SqlException ex)
{
Console.WriteLine(ex.Message);
}

//Console.WriteLine("");
//Process
Thread.Sleep(3000);
}
P陳
請全PO出來
Double click 在那?
有 Timer1 嗎?

這樣大伙沒法幫你的
回到頂部