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!");
}
}
你可以做一些事情,比如觸發一個關閉事件,或者等待一個關鍵點擊睡覺來阻止。你想如何結束它? – doctorlove
我也嘗試過使用類似於你所引用的方法,使用'waitone()'來關閉某些事件或標誌,但這也會導致阻塞事件捕獲。作爲進一步的一步,我打算將它作爲一個Windows服務來部署,以便在我啓動和停止服務後立即在後臺運行。所以現在只是終止整個應用程序來停止監視對我有好處。 – LePhleg
您是否嘗試添加Console.Read();最後在主要方法?可能是有效的。 –