0

我目前正在測試第三方API,其中一些事件是從遠程服務器觸發的,我嘗試使用簡單的Windows控制檯應用程序捕獲這些事件。控制檯應用程序僅在從Visual Studio運行時捕獲事件

只要我按F5運行我的控制檯應用程序,我的場景就可以平穩運行。事件會被捕獲並實時顯示。

所以我試着部署應用程序並單獨運行。當然,main()只要命令用完就立即終止程序的執行。我嘗試了幾個解決方案,例如How to keep a .NET console app running?What is the best way to keep a C# Console app running

使用無限循環,等待用戶輸入或關閉事件的waitone()導致無法捕獲事件的阻塞狀態。

所以我坦率地問,有沒有辦法運行我的控制檯模擬它與Visual Studio調試器運行的方式?

僅供參考,你可以找到我下面的示例代碼:

class Program 
    { 

     static void Main(string[] args) 
     { 
      Program program = new Program(); 

      //Login to third-part API service 
      Net2 net2 = new Net2(); 
      net2.Login(); 

      //Monitor events from a devoce 
      net2.client.MonitorAcu(1172079); 
      Console.WriteLine("Monitoring ACU #1172079. Listening for events..."); 

      //Subscribe for events 
      net2.client.Net2AccessEvent += new OemClient.Net2AcuEventHandler(program.Net2AccessEvent); 

     } 

     private void Net2AccessEvent(object sender, IEventView e) 
     { 
      Console.WriteLine("An event was captured!"); 
     } 
    } 
+0

你可以做一些事情,比如觸發一個關閉事件,或者等待一個關鍵點擊睡覺來阻止。你想如何結束它? – doctorlove

+0

我也嘗試過使用類似於你所引用的方法,使用'waitone()'來關閉某些事件或標誌,但這也會導致阻塞事件捕獲。作爲進一步的一步,我打算將它作爲一個Windows服務來部署,以便在我啓動和停止服務後立即在後臺運行。所以現在只是終止整個應用程序來停止監視對我有好處。 – LePhleg

+1

您是否嘗試添加Console.Read();最後在主要方法?可能是有效的。 –

回答

2

在最後添加

Console.Read(); 

的主要方法。 它不會允許關閉應用程序,直到用戶按任何鍵,它也不會阻止事件處理程序。

相關問題