2011-03-06 83 views
1

我想寫一個Windows服務,將與我的win應用程序通信,它將運行我的Windows窗體。我該怎麼做?如果你給我一個簡單例子的鏈接,它會非常好。贏得服務和贏得應用程序之間的溝通

我還有一個問題:如果我使用Windows服務運行我的勝利表單,並且如果我不關閉我的表單,它將在用戶註銷時關閉,這是真的嗎?

+0

請參閱http://msdn.microsoft.com/zh-CN/library/system.servicemodel.netnamedpipebinding.aspx以獲取機器上和http://msdn.microsoft.com/en-us/library/system .servicemodel.nettcpbinding.aspx進行跨機器通信。 – 2011-03-06 17:48:30

回答

4

有許多選擇:

  • WCF
  • .NET遠程
  • 共享內存
  • 命名管道
  • 純TCP
  • ...

什麼機制及米是最適合你的情況取決於的要求,你沒有說明,可能沒有考慮。如果你不知道你需要什麼,只要抓住任何足夠簡單的機制,並且你已經使用了一個合適的教程並開始編碼。

+0

我想獲得本地網絡中任何用戶的登錄/註銷時間,現在我想開始我的服務,它運行我的應用程序,我的應用程序記錄時間,但如果用戶註銷應用程序將被關閉,而我不能再記錄細節,是真的嗎? – Farna 2011-03-06 18:10:15

0

Ondrej回答了您的問題的第一部分。你還問:

我還有一個問題,如果我跑我的 贏形式的窗口服務,如果我 不收我的形式,它會在用戶註銷關閉 ,是真的嗎?

嗯,首先,一個服務運行時沒有任何UI,沒有任何形式。如果您的服務需要與用戶溝通,那麼這就是您需要的應​​用程序。

但要回答我認爲你問的問題,當用戶註銷時,正在運行的所有應用程序都將關閉,但服務將繼續運行。

+0

如果將serviceProcessInstaller1的帳戶屬性設置爲用戶,我的服務會發生什麼? – Farna 2011-03-06 18:06:34

+0

@ na.farzane沒事。服務運行在不同的非交互式*會話*中。 – 2011-03-06 18:11:59

+0

「用戶」和「本地系統」有什麼不同? – Farna 2011-03-06 18:16:57

0

實際上,一個windows服務用於執行必須獨立運行一段時間的操作。它沒有任何顯示操作進度的UI。

見的情況下,你可以使用Windows服務的例子...

例如:如果表中包含的紀錄N個號碼,每個記錄必須進行處理。假設處理可能需要幾分鐘時間,這可能會導致在asp.net中出現某種超時,您可以使用Windows服務運行此過程。您可以在Windows服務中設置一個計時器來安排行處理(一次一行,並在一天結束時完成整個行處理)。