我觉得问这个问题很愚蠢但是..
如何在不阻塞线程的情况下阻止我的应用程序退出?
目前它是一个控制台应用程序。但它将是一个“windows-app”
(在 VS 中右键单击启动项目 -> 应用程序 -> 输出类型:(第一个)Windows 应用程序 - 不是商店应用程序。这只是为了拥有一个没有任何 GUI 的“隐形”应用程序。所以我不能使用Console.ReadLine()
稍后)
我现在在做什么
var app = WebApp.Start<OwinStartup>(url);
Console.ReadLine(); // wait until I press enter
app.Dispose();
我不想这样阻塞我的线程
while (isRunning)
{
Thread.Sleep(1000);
}
我有什么可能实现这个目标?
最佳答案
声明一下,我对 WebApp
一点都不熟悉。但是,您可以使用 ManualResetEvent
来完成您想要的。
using (var app = WebApp.Start<OwinStartup>(url))
{
ManualResetEvent stopHandle = new ManualResetEvent(false);//Might need to be true, I always get this mixed up.
//Pass handle to app somehow
stopHandle.WaitOne();
}
所以这段代码创建了应用程序,然后创建了一个 ManualResetEvent
。然后将此事件传递给应用程序,然后线程停止并等待它被设置。在应用程序中,您可以随时设置它,您可以读取控制台输入,等待页面上的按钮被点击或进行其他操作。
我在这里假设 WebApp
类负责创建另一个线程或使用异步来处理网络请求。否则,您需要在另一个线程上运行该应用。
关于c# - 如何替换 ReadLine 以退出我的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28206949/