台灣最大程式設計社群網站
線上人數
737
 
會員總數:245021
討論主題:188965
歡迎您免費加入會員
討論區列表 >> C# >> 請問如何讓程式在背景執行?
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請問如何讓程式在背景執行?
價值 : 20 QP  點閱數:172 回應數:12

樓主

Robert
初學者
4 222
1418 99
發送站內信

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



搜尋相關Tags的文章: [ 背景執行 ] ,
本篇文章發表於2019-10-03 17:17
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

P陳
檢舉此回應
這樣可以嗎?
Me.WindowState = FormWindowState.Minimized
Me.Hide()
本篇文章回覆於2019-10-03 20:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

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;
}
}
請問這樣為何程式不會在執行時自動縮到右下角?
本篇文章回覆於2019-10-09 17:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

P陳
檢舉此回應
這個簵例說的很清楚
請參考 是否顯示圖示


本篇文章回覆於2019-10-09 20:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

誰是誰
檢舉此回應
建議你做成 Windows Service (Windows 服務) 形式的應用程式
參考教學課程:建立 Windows 服務應用程式
本篇文章回覆於2019-10-19 02:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Robert
檢舉此回應
為何要做成Windows Service的形式呢? 我現在碰到一個問題,我將這個程式以一個Icon放在右下角,希望使用者Double Click後,就會跳出一個視窗,讓他可以關掉該程式。但我發現因為計時是用while loop重複執行,所以Double Click變成無效,要怎樣處裡?
本篇文章回覆於2019-10-21 12:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

P陳
檢舉此回應
double Click 後 將計時器關掉即可

Timer1.Enabled=false

另:計時器儘量不要用 在 While 中啟動,很難控制
本篇文章回覆於2019-10-21 12:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

Robert
檢舉此回應
我是用sleep的方式在while loop 中,我試過只要有這個 while loop ,即使什麼都不做,double click也不會有作用。
本篇文章回覆於2019-10-21 13:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

P陳
檢舉此回應
那請將最後的程式PO上來吧
本篇文章回覆於2019-10-21 16:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

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);
}
本篇文章回覆於2019-10-21 17:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

P陳
檢舉此回應
請全PO出來
Double click 在那?
有 Timer1 嗎?

這樣大伙沒法幫你的
本篇文章回覆於2019-10-21 19:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

Robert
檢舉此回應
原本的問題已經解決了,謝謝大家。但是有一個新的問題,我發現 this.hide()會在工作列也出現一個圖示,我希望不要有這個圖式,純粹只有一個小的圖示在 tray裡面,因為我不希望使用者可以很簡單的關掉這個程式。
本篇文章回覆於2019-10-23 11:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

P陳
檢舉此回應
有下這個指令嗎?

this.WindowState == FormWindowState.Minimized

本篇文章回覆於2019-10-23 15:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.