我正在编写一个C#控制台应用程序,它生成多个指向网站上不同图像的URL,并使用WebClient.DownloadDataAsync()
下载字节流。
我的问题是,一旦第一个异步调用被发出,控制台应用程序会认为程序已完成并在异步调用返回之前终止。通过使用Console.Read()
,我可以强制控制台保持打开状态,但这似乎不是很好的设计。此外,如果用户在过程中按下回车键(当控制台正在等待输入时),程序将终止。
有没有更好的方法来防止控制台在等待异步调用返回时关闭?
编辑:调用是异步的,因为我正在通过控制台向用户提供状态指示器以进行下载。
Task
作为主要工作程序来调试Windows服务时非常有用。在Program.Main()
中,使用类似于#if DEBUG [debug hook] #else [normal service code] #endif
的预处理器指令。然后在“debug hook”中,只需在new MyService().OnStart()
之后添加一个对resetEvent.WaitOne()
的调用即可。然后,您可以使用VS调试以连续运行调试模式,而不会以任何有意义的方式修改实际的服务代码。 - Eric Lease