我想啟動(dòng)2個(gè)相關(guān)的應(yīng)用程序。首先,我想啟動(dòng)我的“服務(wù)”應(yīng)用程序,然后啟動(dòng)我的“客戶端”應(yīng)用程序。它并不能始終如一地發(fā)揮作用。有時(shí)客戶端啟動(dòng)太快而最終無法連接到服務(wù)。有人可以告訴我哪里需要更改代碼才能正常工作并且只有在服務(wù)完全啟動(dòng)后才啟動(dòng)客戶端嗎?public class Program{public static void Main(string[] args){ Console.WriteLine("Starting Service"); StartService(); if (IsServiceRunning()) { Console.WriteLine("Starting Client"); StartClient(); } Console.ReadLine();}private static void StartClient(){ ProcessStartInfo startInfo = new ProcessStartInfo() { WorkingDirectory = @"C:\Client", FileName = "Client.exe" }; Process.Start(startInfo);}private static bool IsServiceRunning(){ Console.WriteLine("Check to see is running..."); Process[] pname = Process.GetProcessesByName("MyCommonService"); int runningCheck = 0; if (pname.Length == 0 || runningCheck < 10) { Console.WriteLine("Did not find the process. Check again..."); runningCheck += 1; Thread.Sleep(250); IsServiceRunning(); } Thread.Sleep(1000); return true;}private static void StartService(){ Console.WriteLine("Starting Service"); ProcessStartInfo startInfo = new ProcessStartInfo() { WorkingDirectory = @"C:\Service", FileName = "MyCommonService.exe" }; Process.Start(startInfo);}}
1 回答

慕哥6287543
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
看起來這始終取決于服務(wù)“完全啟動(dòng)”所需的時(shí)間。如果服務(wù)需要執(zhí)行網(wǎng)絡(luò)操作才能“完全啟動(dòng)”,您可能無法保證服務(wù)何時(shí)“完全啟動(dòng)”。您可以使用進(jìn)程間通信,而不是簡(jiǎn)單地等待 3,500 毫秒。
2 個(gè) C# 進(jìn)程之間進(jìn)行進(jìn)程間通信的最簡(jiǎn)單方法是什么?
基本思想是讓您的服務(wù)進(jìn)程與您的程序進(jìn)行通信,如果它返回一個(gè)顯示服務(wù)已啟動(dòng)的字符串,則僅啟動(dòng)您的客戶端進(jìn)程。
- 1 回答
- 0 關(guān)注
- 134 瀏覽
添加回答
舉報(bào)
0/150
提交
取消